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.