Saya mengeksekusi permintaan, yang menghasilkan paket:
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.
Jadi, beberapa pertanyaan
1. Mengapa Statistik IO menunjukkan bacaan lebih tinggi daripada Profiler? .
Mengenai KB314648 tidak masalah jika jika Profiler melaporkan angka yang lebih tinggi dari Statistik IO. Tetapi Profiler menunjukkan 92283
bacaan pada kueri yang dijelaskan, eksekusi yang sama. Apakah itu berarti bahwa Profiler tidak menghitung bacaan workfile / worktable?
2. Apa perbedaan antara "Meja Kerja" dan "Meja Kerja"
Saya telah menemukan bahwa:
- file kerja dapat digunakan untuk menyimpan hasil sementara untuk gabungan hash dan agregat hash.
- tabel kerja dapat digunakan untuk menyimpan hasil sementara untuk spool kueri, variabel lob, variabel XML, dan kursor.
Apakah ada perbedaan fisik di antara mereka?
3. Mengapa ada "Meja Kerja" dalam kasus khusus ini?
Mengapa saya memiliki meja kerja sama sekali, jika ada 0 bacaan logis? Ini termasuk dalam statistik IO hanya karena mungkin ada kebutuhan untuk itu (dalam hal perkiraan buruk)?
Deskripsi yang ditemukan di technet tampaknya kabur ..
4. Apa yang dimaksud dengan "Fisik dibaca" pada Workfile?
Apakah itu berarti bahwa tidak ada cukup memori yang diberikan untuk permintaan, jadi data harus ditulis ke disk saat permintaan dijalankan (peringatan kuning pada Pencocokan Hash)? Dapatkah saya berasumsi bahwa setiap kali saya melihat meja kerja / workfile di Statistics IO dengan pembacaan fisik, tidak ada cukup memori yang diberikan untuk permintaan dan beberapa hasil menengah dari permintaan harus ditulis ke disk tempdb? Dan setiap kali saya melihat hanya membaca logis, RAM digunakan?
5. Satu "workfile" berarti tepat satu tabel yang digunakan untuk satu tujuan?
Jika ada lebih dari satu workfile / meja kerja maka saya tidak dapat mengetahui operasi apa yang digunakan?