SET STATISTIK IO- meja kerja / workfile

21

Saya mengeksekusi permintaan, yang menghasilkan paket: masukkan deskripsi gambar di sini

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 92283bacaan 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?

Jānis
sumber
Apa peringatan pada pertandingan hash? Apakah itu tumpahan tempdb?
Tom V - Team Monica
@ TomV, ya- tingkat tumpahan 1 & tingkat tumpahan 2.
Jānis

Jawaban:

15

1. Mengapa Statistik IO menunjukkan bacaan lebih tinggi daripada Profiler?

Tidak tahu, maaf. Sering ada perbedaan karena mereka mengukur hal-hal yang berbeda seperti yang disinggung dalam artikel basis pengetahuan. Tidak ada dokumentasi tambahan tentang hal ini yang saya ketahui. Anda mungkin dapat menyimpulkan beberapa hal melalui pengujian terperinci, tetapi sebenarnya tidak ada jaminan apa pun yang Anda temukan akan tetap konsisten di seluruh versi dan versi. Perilaku yang dimaksud tidak cukup konsisten, sebelum memperhitungkan kemungkinan bug .

2. Apa perbedaan antara "Meja Kerja" dan "Meja Kerja"

Keduanya adalah objek internal; selain itu cukup banyak apa yang namanya: Meja kerja memiliki struktur seperti tabel, file kerja seperti file. Struktur terperinci tidak terlihat, meskipun beberapa fitur luas dapat dilihat dengan memeriksa metode mereka dan mengikuti jalur eksekusi mereka dengan debugger.

3. Mengapa ada "Meja Kerja" dalam kasus khusus ini?

Meja kerja selalu diperlukan untuk operasi hashing (mode baris). Ini digunakan secara internal dalam mendistribusikan input ke partisi hash (istilah kelebihan beban, tidak terkait dengan partisi tabel) dan untuk melacak status. Saya belum pernah melihat tabel kerja hashing melaporkan apa pun selain nol dalam output statistik, tapi kemudian saya tidak pernah benar-benar melihatnya.

4. Apa yang dimaksud dengan "Fisik dibaca" pada Workfile?

File kerja adalah bagian dari mekanisme yang digunakan ketika partisi hash tumpah. Meskipun tidak didokumentasikan, pembacaan fisik dan baca-depan terjadi ketika mesin eksekusi mengambil partisi hash tumpah dari file kerja.

5. Satu "workfile" berarti tepat satu tabel yang digunakan untuk satu tujuan?

Seingat saya, mungkin ada beberapa contoh. Tidak ada cara saya tahu untuk menghubungkan STATISTICS IOgaris tertentu ke objek tertentu atau simpul rencana. Ini adalah batasan jangka panjang. Mungkin ada perubahan untuk ini di SQL Server 2016, meskipun saya belum diuji untuk melihat apakah itu berlaku untuk objek sementara internal.

Pada akhirnya, tidak banyak yang berguna untuk dipelajari dari STATISTICS IOhasil untuk file kerja dan tabel kerja di luar apa yang dapat Anda pelajari dengan melihat informasi lain dalam rencana pasca-eksekusi (atau melalui DMVs, Perpanjangan Acara dll.). Saya minta maaf atas jawaban yang tidak lengkap, tapi itu yang terbaik yang bisa saya tawarkan di atas kepala saya.

Paul White mengatakan GoFundMonica
sumber