Kueri seperti di bawah ini yang dijamin tidak akan mengembalikan baris apa pun, membutuhkan waktu mulai 0 hingga 160 detik di salah satu server kami:
select col1, col2, col3
from tab1
where 0 = 1
Dua minggu lalu, ini terjadi enam kali dalam interval 48 jam. Minggu lalu permintaan yang sama memakan waktu ~ 0 detik. Saya memiliki log SQL aplikasi kita tetapi belum menemukan tersangka. Selain itu, saya pikir 0 / atas mana 0 = 1 jenis kueri tidak pernah mengenai halaman data, jadi harus tahan terhadap kunci data tingkat baris / halaman / tabel? Skema ini tidak tersentuh oleh SQL (dikenal) apa pun.
Karena masalahnya tidak konsisten, dan server berada di bawah beban yang sangat berat, saya ingin memahami teori di balik apa yang terjadi sebelum melampirkan profiler SQL. Kueri lain berjalan tanpa masalah selama penundaan ini. Masalah yang diketahui dalam aplikasi ini adalah tingginya jumlah kueri SQL yang dibuat secara dinamis - sekitar 200k kueri unik dari total 850k (log) kueri selama 48 jam, dapatkah ini menyebabkan masalah seperti ini?
Server menjalankan SQL Server 2005 edisi standar, RAM 96 GB, disk pada SAN dan 4 CPU / 16 core. File dan filegroup basis data dioptimalkan dengan baik dan seharusnya tidak menjadi masalah (tapi kami melihat ini secara terpisah).
Setiap petunjuk di mana mencarinya sangat dihargai.
Sunting: Sempurna! Memutar ulang kueri untuk menambahkan rencana eksekusi, dan butuh 1 menit 35 detik. Berikut rencana eksekusi dan tangkapan layar yang menunjukkan durasi kueri:

Sunting 2: detail waktu statistik untuk putaran kedua. Tampaknya lambat secara konsisten saat ini, jadi kami akan melampirkan profiler dan perfmon:
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 97402 ms.
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.
