it-swarm.com.de

Maximaler SQL Server-Speicher beschränkt die Verwendung von RAM) nicht

Ich möchte Ihren Beitrag dazu. Ich habe einen SQL Server 2008r2 Ent. Ed. 64bit mit 16 Kernen und 64GB RAM. Ab 20111014 ist eine Instanz von SQL Server vollständig gepatcht.

Der maximale RAM ist auf 60000 MB eingestellt. Die Anzahl der freien RAMs beträgt laut Task-Manager nach einigen Tagen online 0.

Wenn ich den maximalen RAM auf unter 53 GB ändere, wird er sich nach einigen Tagen stabilisieren und einen freien RAM haben.

Es ist der SQL-Prozess, der den RAM gemäß Task-Manager zuweist. Wie komme ich mit dem Problem klar? Es versteht sich von selbst, dass ich bereits viele Tests durchgeführt habe, dies aber noch nicht nach meinem Geschmack gelöst habe. und ohh, wir bekommen keine typische Speicherverknappung, wenn der verfügbare RAM auf 0 frei ist.

Update 1:

Inspiriert von einem anderen Q/A im Zusammenhang mit RAM auf dieser Seite https://dba.stackexchange.com/a/7062/2744 . Ich habe diese beiden verwendet, um zu sehen wofür das RAM verwendet wird).

SELECT TOP ( 10 )
        [type] AS [Memory Clerk Type] ,
        SUM(single_pages_kb) AS [SPA Mem, Kb]
FROM    sys.dm_os_memory_clerks
GROUP BY [type]
ORDER BY SUM(single_pages_kb) DESC
OPTION  ( RECOMPILE ) ;

SELECT  DB_NAME(database_id) AS [Database Name] ,
        COUNT(*) * 8 / 1024.0 AS [Cached Size (MB)]
FROM    sys.dm_os_buffer_descriptors
--WHERE   database_id > 4 -- system databases
--        AND database_id <> 32767 -- ResourceDB
GROUP BY DB_NAME(database_id)
ORDER BY [Cached Size (MB)] DESC
OPTION  ( RECOMPILE ) ;

Die Menge, die von diesen angezeigt wird, ist zuerst 7948432 Kb zweite 44030.57812 MB, das sind insgesamt ungefähr 52 GB, die von SQL Server verwendet werden ... also wo ist der Rest von mir RAM go? :-) Task-Manager-Show im Moment zwischengespeichert 363, verfügbar 401, kostenlos 40 und sqlservr.exe hat Speicher privat eingestellt 64 459 656. Max Ram auf 60000 MB eingestellt wie zuvor.

18
Martin Sjöberg

Die maximale Speichereinstellung von SQL Servern definiert die Grenzwerte nur für die Verwendung des Pufferpools. Über diesen Grenzwert hinaus sind variable, aber signifikante Zuweisungen erforderlich.

Jonathan Kehayias , Christian Bolton und John Samson haben Level 300/400 Beiträge zu diesem Thema. Brent Ozar hat einen leichter zu lesenden Artikel, der ein besserer Ausgangspunkt sein könnte.

Ebenfalls verwandt: SQL Server 2008 R2 "Ghost Memory"

20

Wie bereits erwähnt, handelt es sich bei Pufferpool und Prozedurcache um die einzigen Dinge, die vom maximalen Serverspeicher gesteuert werden. Es gibt viele andere Dinge in SQL Server, die Speicher über diese Grenze hinaus verbrauchen können. Dazu gehören (ohne darauf beschränkt zu sein):

  • Datenbank-Mail
  • SQLCLR
  • Erweiterte gespeicherte Prozeduren
  • Die Binärdateien selbst
  • SQL Mail
  • SSIS
  • SSAS
  • SSRS
16
mrdenny

Ab SQL 2012 wurde single_pages_kb in dieser DMV durch pages_kb ersetzt. https://msdn.Microsoft.com/en-us/library/ms175019.aspx?f=255&MSPPError=-2147217396

Wenn Sie die in der Frage enthaltene Abfrage auf einem Server ab 2012 ausführen möchten, entfernen Sie die Zeichenfolge single_.

3
Razvan Zoitanu

http://msdn.Microsoft.com/en-us/library/ms178067.aspx

Um den maximalen Serverspeicher zu reduzieren, müssen Sie möglicherweise SQL Server neu starten, um den Speicher freizugeben.

Ich verstehe, dass eine Seite im Pufferpool, die nicht auf die Festplatte geschrieben wurde, erst freigegeben wird, wenn dies der Fall ist.

Verursacht das Verringern der maximalen Speichereinstellung, dass SQL Server verschmutzte Seiten löscht?

Er konnte den Puffermanager in perfmon überwachen, um dies zu überprüfen. Perfmon -> SQLServer: Buffer Manager: Datenbankseiten

2
Craig Efrein