Sono query di esecuzione, che produce piano:
Statistiche 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.
Quindi, alcune domande
1. Perché Statistiche IO mostra letture più alte rispetto a Profiler? .
Per quanto riguarda KB314648 è OK se Profiler riporta numeri più alti di IO statistiche. Ma Profiler mostra le 92283
letture alla query descritta, stessa esecuzione. Ciò significa che Profiler non conta le letture del file di lavoro / del worktable?
2. Qual è la differenza tra "Worktable" e "Workfile"
Ho scoperto che:
- i file di lavoro potrebbero essere utilizzati per archiviare risultati temporanei per join hash e aggregati hash.
- le tabelle di lavoro possono essere utilizzate per archiviare risultati temporanei per spool di query, variabili lob, variabili XML e cursori.
C'è qualche differenza fisica tra loro?
3. Perché c'è "Worktable" in questo caso particolare?
Perché ho un worktable, se ci sono 0 letture logiche? È incluso nelle statistiche IO solo perché potrebbe esserne necessario (in caso di stime errate)?
Descrizione trovata su technet sembra vaga ..
4. Che cosa significa "Letture fisiche" su File di lavoro?
Ciò significa che non è stata concessa memoria sufficiente per la query, quindi i dati dovevano essere scritti su disco durante l'esecuzione della query (avviso giallo su Hash Match)? Posso supporre che ogni volta che vedo il worktable / workfile in Statistics IO con letture fisiche, non è stata concessa memoria sufficiente per la query e alcuni risultati intermedi della query dovevano essere scritti sul disco tempdb? E ogni volta che vedo solo letture logiche, viene utilizzata la RAM?
5. Un "file di lavoro" indica esattamente una tabella utilizzata per uno scopo?
Se esiste più di un file di lavoro / tavolo di lavoro, non posso sapere a quale operazione viene utilizzato?