2009-01-14 12 views
17

Einfache Frage, aber ich habe keine gute Erklärung zu Google gefunden. Bei Verwendung von Statistik setzen auf EIN wird die logische Anzahl der Lese- und Scanvorgänge im Nachrichtenfenster von Management Studio angezeigt. Wenn ich habe:sql statistics io scan count erklärung

tblExample, Scan Zählung 5, logische Lesevorgänge 20

Was ist die Anzahl der Scans bedeuten?

Antwort

12

Von Books On Line

Scan count: Anzahl der Index oder die Tabelle ausgeführt Scans.

logische Lesevorgänge: Anzahl der aus dem Datencache gelesenen Seiten.

Physische Lesevorgänge: Anzahl der gelesenen Seiten von der Festplatte.

Read-Ahead liest: Anzahl der Seiten in den Cache für die Abfrage gestellt.

Siehe auch hier: http://technet.microsoft.com/en-us/library/ms184361.aspx

16

Soweit, was ein "Table-Scan" bedeutet, das Beste, was ich finden konnte, ist dies:

Scan count bedeutet einfach, wie oft der Tisch Auf den Index wurde während der Abfrage zugegriffen. Es kann ein vollständiger Scan, Teil-Scan oder einfach ein Suchvorgang sein.

Mit anderen Worten, die Anzahl der Scans allein selbst ist nicht genügend Informationen fortzufahren. Sie müssen genau wissen, was diese Scans waren - also müssen Sie sich den eigentlichen Ausführungsplan genauer ansehen. Unterm Strich ist es keine besonders nützliche Metrik!

Zusätzlich:

http://www.eggheadcafe.com/software/aspnet/32171165/set-statistics-io-scan-count-explanation.aspx

Leider Scan in diesen Tagen Graf ist nicht sehr informativ. Hm, nun, Wenn Sie eine Nummer wie 19223 sehen, hat die Tabelle wahrscheinlich zugegriffen durch eine Nested-Loop-Join viele Male.

Es gab eine Zeit, als "scan count" einfach bedeutete "mal Tabelle zugegriffen", , aber das war lange her, vielleicht in SQL 6.5. Das einzige Mal, wenn Sie eine Scan-Zählung mit dieser Definition von 0 ist mit einer Abfrage erhalten könnte wie ...

select * 
from TestA1 
where CompanyID = 1 
and CompanyID = 2 

... auf dem SQL Server in der Lage sein könnte zu dem Schluss, dass die Abfrage nicht alle Zeilen zurück , ohne auf die Tabelle zuzugreifen.

+4

Sie * können * eine Scananzahl von 0 erhalten und eine Zeile zurückgeben, wenn Sie nach einem eindeutigen Index suchen. z.B. 'SET STATISTICS IO ON; SELECT * FROM [master]. [Dbo]. [Spt_values] WHERE type = 'A' AND nummer = 1 AND name = 'rpc'' Dies ist dokumentiert [hier] (http://blogs.msdn.com/b/ sqlserverfaq/archive/2010/09/14/scan-count-Bedeutung-im-Satz-Statistik-io-output.aspx) –

12

Wenn weiterhin msdn Zitate sammeln.Dann [1], die in wiederholt wird [2].

  • "Logische Lese
    Dieser Wert ist die Gesamtzahl der Seite zeigt Zugriffe notwendig, um die Abfrage zu verarbeiten Jede Seite wird aus dem Datencache gelesen , ob diese Seite von der Festplatte in den Cache für einen gegebenen Lesevorgang gebracht werden sollte Dieser Wert ist immer mindestens so groß und normalerweise größer als der Wert für Physical Reads. Die gleiche Seite kann mehrmals gelesen werden (z B. wenn eine Abfrage von einem Index gesteuert wird, sodass die Anzahl der logischen Lesevorgänge für eine Tabelle größer sein kann als die Anzahl der Seiten in einer Tabelle.

  • Physikalische Lesevorgänge
    Dieser Wert gibt die Anzahl der Seiten an, die von der Festplatte gelesen wurden. Es ist immer kleiner oder gleich dem Wert von Logical Reads. Der Wert des Puffer-Cache Hit Ratio, wie Performance Monitor angezeigt wird, von der Logik berechnet Liest und Physische Lese Werte wie folgt:

  • Ahead lesen Reads
    Der Read Liest Ahead Wert die Anzahl der Seiten angibt, Diese wurden unter Verwendung des Read-Ahead-Mechanismus in den Cache gelesen, während die Abfrage verarbeitet wurde. Diese Seiten werden nicht unbedingt von der Abfrage verwendet. Wenn eine Seite letztendlich benötigt wird, wird ein logischer Lesevorgang gezählt, ein physischer Lesevorgang jedoch nicht. Ein hoher Wert bedeutet, dass der Wert für die physikalische liest, ist wahrscheinlich geringer und die Cache-Trefferquote ist wahrscheinlich höher als ... [abgeschnitten durch vgv8]

  • Abtastzählung
    Der Scan Zählwert gibt die Anzahl der Mal, dass auf die entsprechende Tabelle zugegriffen wurde. Äußere Tabellen eines Nested-Loop-Joins weisen eine Scan-Anzahl von 1 auf. Bei inneren Tabellen kann die Scan-Anzahl die Anzahl der "Durchläufe" sein, auf die die Tabelle zugegriffen hat. Die Anzahl der logischen Lesevorgänge wird durch die Summe der Anzahl der Suchvorgänge bestimmt, multipliziert mit der Anzahl der Seiten, auf die bei jedem Scan zugegriffen wird. Selbst für Joins mit verschachtelten Schleifen kann die Anzahl der Abfragen für die innere Tabelle jedoch als 1 angezeigt werden. SQL Server kopiert möglicherweise die erforderlichen Zeilen aus der inneren Tabelle in eine Arbeitstabelle im Cache und verwendet diese Arbeitstabelle für den Zugriff auf die tatsächlichen Datenzeilen. Wenn dieser Schritt im Plan verwendet wird, gibt es in der STATISTICS IO-Ausgabe häufig keinen Hinweis darauf. Sie müssen die Ausgabe von STATISTIC TIME sowie Informationen über den tatsächlichen Verarbeitungsplan verwenden, um die tatsächliche Arbeit bei der Ausführung einer Abfrage zu ermitteln. Bei Hash-Joins und Merge-Joins wird in der Regel der Scan-Count als 1 für beide am Join beteiligten Tabellen angezeigt. Diese Join-Typen können jedoch wesentlich mehr Speicher belegen. Sie können den memusage-Wert in Sysprocesses überprüfen, während die Abfrage ausgeführt wird, aber im Gegensatz zum Wert physical_io ist dies kein kumulativer Zähler und nur für die aktuell ausgeführte Abfrage gültig. Sobald eine Abfrage abgeschlossen ist, gibt es keine Möglichkeit, um zu sehen, wie viel Speicher verwendet es.“

[1]
Kapitel 4. Fehlerbehebung der Abfrageleistung.Abfrageleistung Überwachung
Innerhalb Microsoft® SQL Server ™ 2005 : Abfrageoptimierung und Optimierung
von Kalen Delaney


Verlag: Microsoft Press
Pub Datum: 26. September 2007
Print ISBN-10 : 0-7356-2196-9
Print ISBN-13: 978-0-7356-2196-1
Seiten: 448

[2]
Überwachung der Abfrageleistung
Optimierung der Abfrageleistung
von Ron Soukup, Kalen Delaney
Kapitel 14 von Inside Microsoft SQL Server 7.0, veröffentlicht von Microsoft Press
http://technet.microsoft.com/en-us/library/cc917719.aspx#ECAA