Ich führe eine Anfrage aus, die einen Plan erstellt:
Statistik IO:
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Workfile'. Scan count 128, logical reads 5952, physical reads 576, read-ahead reads 6080, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Table1'. Scan count 9, logical reads 90450, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Also, einige Fragen
1. Warum zeigt Statistics IO höhere Lesezugriffe als Profiler? .
In Bezug auf KB314648 ist es in Ordnung, wenn Profiler höhere Zahlen als Statistics IO meldet. Aber Profiler zeigt 92283
liest bei beschriebener Abfrage die selbe Ausführung an. Bedeutet das, dass der Profiler Workfile- / Worktable-Lesevorgänge nicht zählt?
2. Was ist der Unterschied zwischen "Worktable" und "Workfile"?
Ich habe festgestellt, dass:
- Arbeitsdateien können verwendet werden, um temporäre Ergebnisse für Hash-Joins und Hash-Aggregate zu speichern.
- Arbeitstabellen können zum Speichern temporärer Ergebnisse für Abfragespool, Lob-Variablen, XML-Variablen und Cursor verwendet werden.
Gibt es einen physischen Unterschied zwischen ihnen?
3. Warum gibt es in diesem speziellen Fall "Arbeitstisch"?
Warum habe ich überhaupt eine Arbeitstabelle, wenn es 0 logische Lesevorgänge gibt? Es ist in der Statistik enthalten, nur weil es notwendig sein könnte (im Falle von falschen Schätzungen)?
Beschreibung auf Technet gefunden scheint vage ..
4. Was bedeutet "physisches Lesen" in Workfile?
Bedeutet das, dass nicht genügend Arbeitsspeicher für die Abfrage zur Verfügung stand und die Daten während der Ausführung der Abfrage auf die Festplatte geschrieben werden mussten (gelbe Warnung bei Hash Match)? Kann ich davon ausgehen, dass, wenn in Statistics IO Worktable / Workfile mit physischen Lesevorgängen angezeigt wird, nicht genügend Speicher für die Abfrage bereitgestellt wurde und einige Zwischenergebnisse der Abfrage auf die temporäre Festplatte geschrieben werden mussten? Und wenn ich nur logische Lesevorgänge sehe, wird RAM verwendet?
5. Eine "Arbeitsdatei" bedeutet genau eine Tabelle, die für einen Zweck verwendet wird?
Wenn es mehr als eine Arbeitsdatei / einen Arbeitstisch gibt, kann ich nicht wissen, für welche Operation sie verwendet wird?