IO- und Zeitstatistiken

NovaSql führt jede Abfrage mit SET STATISTICS IO, TIME ON aus. Statt der langen Textausgabe, die das im Management Studio erzeugt, bereitet der Tab Statistiken die Zahlen als Tabellen auf.

Pro Statement

Für jedes Statement:

  • Parse + Compile: CPU- und Gesamtzeit für das Übersetzen der Abfrage
  • Ausführung: CPU- und Gesamtzeit für das Ausführen
  • je gelesener Tabelle eine Zeile mit den Spalten unten
Spalte Bedeutung
Scans wie oft die Tabelle bzw. der Index durchlaufen wurde
Logical aus dem Speicher gelesene 8-KB-Seiten; die wichtigste Zahl
Physical von der Platte gelesene Seiten
Read-Ahead vorausschauend von der Platte geladene Seiten
LOB Logical / Physical / Read-Ahead dasselbe für große Spalten (varchar(max), xml …)
Page Server nur bei Azure SQL Hyperscale

Jedes Statement hat eine Summenzeile, am Ende steht die Gesamtsumme über alle Statements.

Was die Zahlen sagen

Logical Reads sind das beste Maß für die Arbeit einer Abfrage. Sie hängen nicht davon ab, ob die Daten gerade im Cache liegen, und schwanken deshalb kaum zwischen zwei Läufen. Eine Optimierung ist gelungen, wenn die Logical Reads sinken.

Zeiten schwanken dagegen mit der Last des Servers. Physical Reads treten vor allem beim ersten Lauf auf, wenn die Daten noch nicht im Speicher sind.

Teilen

Als Markdown kopieren legt die Statistik als Markdown-Tabelle in die Zwischenablage, fertig für ein Ticket, einen Pull Request oder ein Wiki.