Per buku bacaan saya tentang SQL Server 2008 Internal dan Pemecahan Masalah (dipinjam dari perpustakaan lokal di Illinois) oleh Christian Bolton, Brent Ozar dll. Saya mencoba mencari pemahaman dan konfirmasi tentang server SQL dan banyak mencari di web Saya akan sangat menghargai jika seseorang dapat mengkonfirmasi atau memperbaiki pemahaman saya.
Setiap permintaan atau operasi yang membutuhkan hibah memori permintaan akan membutuhkan memori ruang kerja. Dalam kueri umum menggunakan Sort, Hash Match Join, Parallelism (Tidak yakin tentang ini), Insert Massal (tidak yakin), Index Rebuild dll. Akan membutuhkan memori workspace query ..
Memori ruang kerja adalah bagian dari kumpulan buffer SQL Server (dialokasikan sebagai bagian dari kumpulan buffer) dan memori ruang kerja maksimum adalah 75% dari memori yang dialokasikan untuk kumpulan buffer. Secara default kueri tunggal tidak bisa mendapatkan lebih dari 25% memori ruang kerja (dalam SQL 2008 / SQL 2012 - dikontrol oleh grup beban kerja default Resource Governor di luar kotak).
Mencari konfirmasi atas pengertian saya
1) Mempertimbangkan sistem dengan RAM 48 GB dan memori server maks yang dikonfigurasikan ke 40 GB apakah ini berarti memori ruang kerja maks dibatasi hingga 30 GB dan satu permintaan tidak bisa mendapatkan memori ruang kerja (memori permintaan) lebih dari 10 GB. Jadi, jika Anda memiliki kueri buruk yang bekerja dengan satu miliar baris yang melakukan hash join bergabung dan membutuhkan lebih dari 10 GB memori (memori ruang kerja) apakah akan peduli untuk pergi melalui antrian pemberian memori ini atau langsung menumpahkan ke disk?
2) Jika kueri yang melakukan operasi pengurutan besar-besaran telah menetapkan memori ruang kerja 5 MB dan selama pelaksanaan kueri jika pengoptimal kueri menyadari bahwa karena statistik yang buruk atau indeks yang hilang, kueri ini benar-benar membutuhkan 30 MB memori ruang kerja. akan segera tumpah ke tempdb. Bahkan jika sistem memiliki banyak ruang kerja memori yang tersedia selama eksekusi setelah permintaan melebihi memori ruang kerja yang diberikan selama eksekusi itu harus tumpah ke disk. Apakah pemahaman saya benar?