8 Stimmen

Wie analysiert man das Ergebnis von 'dbcc memorystatus' in SQL Server 2008?

Derzeit stehe ich vor einem SQL-Speicherdruckproblem. Ich habe dbcc memorystatus Hier ist ein Teil meines Ergebnisses:

Memory Manager                           KB
---------------------------------------- -----------
VM Reserved                              23617160
VM Committed                             14818444
Locked Pages Allocated                   0
Reserved Memory                          1024
Reserved Memory In Use                   0

Memory node Id = 0                       KB
---------------------------------------- -----------
VM Reserved                              23613512
VM Committed                             14814908
Locked Pages Allocated                   0
MultiPage Allocator                      387400
SinglePage Allocator                     3265000

MEMORYCLERK_SQLBUFFERPOOL (node 0)       KB
---------------------------------------- -----------
VM Reserved                              16809984
VM Committed                             14184208
Locked Pages Allocated                   0
SM Reserved                              0
SM Committed                             0
SinglePage Allocator                     0
MultiPage Allocator                      408

MEMORYCLERK_SQLCLR (node 0)              KB
---------------------------------------- -----------
VM Reserved                              6311612
VM Committed                             141616
Locked Pages Allocated                   0
SM Reserved                              0
SM Committed                             0
SinglePage Allocator                     1456
MultiPage Allocator                      20144

CACHESTORE_SQLCP (node 0)                KB
---------------------------------------- -----------
VM Reserved                              0
VM Committed                             0
Locked Pages Allocated                   0
SM Reserved                              0
SM Committed                             0
SinglePage Allocator                     3101784
MultiPage Allocator                      300328

Buffer Pool                              Value
---------------------------------------- -----------
Committed                                1742946
Target                                   1742946
Database                                 1333883
Dirty                                    940
In IO                                    1
Latched                                  18
Free                                     89
Stolen                                   408974
Reserved                                 2080
Visible                                  1742946
Stolen Potential                         1579938
Limiting Factor                          13
Last OOM Factor                          0
Page Life Expectancy                     5463

Process/System Counts                    Value
---------------------------------------- --------------------
Available Physical Memory                258572288
Available Virtual Memory                 8771398631424
Available Paging File                    16030617600
Working Set                              15225597952
Percent of Committed Memory in WS        100
Page Faults                              305556823
System physical memory high              1
System physical memory low               0
Process physical memory low              0
Process virtual memory low               0

Procedure Cache                          Value
---------------------------------------- -----------
TotalProcs                               11382
TotalPages                               430160
InUsePages                               28

Können Sie mir helfen, dieses Ergebnis zu analysieren?

Ist es eine Menge ausführen Plan wurden zwischengespeichert verursacht das Speicherproblem oder andere Gründe?

9voto

JohnW Punkte 2932

Es ist ein bisschen spät, aber vielleicht hilft es jemandem, der dies liest. Vom Sehen Available Virtual Memory de 8 TB Ich kann erkennen, dass es sich um ein 64-Bit-System handelt - auch weil es keine Hinweise auf die AWE-Zuweisung gibt.

Wie Lette hervorhebt, hat das Betriebssystem selbst nur 256 MB de Available Physical Memory - aber das ist nur die verbleibende Menge, nicht die gesamte installierte Menge. SQL wird versuchen, so viel physischen Speicher wie möglich zu verwenden, um die Leistung zu steigern; der Zugriff auf den Speicher ist bei weitem schneller als das Bewegen eines Festplattenkopfes.

Vorbeigehen VM Committed SQL verwendet 14.1 GB des physischen Speichers, der durch VM Committed - Ich schätze, dass insgesamt 16 GB physischer Speicher vorhanden sind, wobei die Anforderungen des Betriebssystems und der verfügbare physische Speicher berücksichtigt werden und 16 eine gute runde Zahl ist.

Der Speicherdruck kommt vor allem aus zwei Bereichen: Der SQL-Pufferpool und der SQL-Plan-Cache.

SQL-Pufferpool

Etwa 13,5 GB Speicher werden für den Pufferpool verwendet. Das ist nicht untypisch für SQL; es wird versuchen, so viel Speicher wie möglich zu verwenden.

SQL-Plan-Cache:

Nach Angaben von 11,382 Ad-hoc-Abfragen werden Abfragepläne zwischengespeichert. Allerdings werden nur 28 Pläne in Gebrauch sind - weniger als 1 %. Wenn wir dies auf CACHESTORE_SQLCP zurückführen, sehen wir eine interessante Geschichte - derzeit wird kein Speicher für diese Pläne verwendet, aber ich denke, dass sie zu einem bestimmten Zeitpunkt viel Speicher verbraucht haben. 3.24 GB des Speichers. Ich muss zugeben, dass ich mir da nicht so sicher bin, und ich würde mich über eine zweite Meinung freuen, wenn ich 0 für VM Commmitted, aber Werte für die Allokatoren sehe.

Zusammenfassung Da Sie SQL 2008 verwenden, sollten Sie in Erwägung ziehen, die Optimierung für Ad-hoc-Abfragepläne . Dies hilft bei der Verringerung des Speicherdrucks, wenn Ihre Arbeitslasten hauptsächlich ad hoc sind.

Referenz

0voto

Christoffer Lette Punkte 13576

Hier ist eine Vermutung:

Eine Sache, die mir auffällt, ist, dass Sie eine Working Set de 15 GB während die Available Physical Memory ist nur 258 MB . Ich glaube, Sie sollten mehr Speicher für Sql Server zur Verfügung stellen. (Ob das nur bedeutet, einen Schieberegler ein wenig weiter nach rechts zu schieben und/oder mehr RAM zu installieren, kann ich nicht wissen).

0voto

Die Dokumentation für DBCC MEMORYSTATUS() finden Sie hier: http://support.microsoft.com/kb/907877

Sie sind nicht sonderlich ausführlich, geben Ihnen aber zumindest einen Eindruck von dem, was Sie sehen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X