Salah satu pelanggan kami baru saja meningkatkan ke server baru.
Untuk prosedur tersimpan tertentu saat pertama kali Anda menjalankannya, membutuhkan waktu lebih dari tiga menit untuk dijalankan. Berjalan selanjutnya kurang dari 1 detik.
Ini membuat saya percaya bahwa tiga menit awal terutama digunakan untuk menghitung rencana eksekusi. Berjalan selanjutnya kemudian gunakan saja paket cache dan jalankan secara instan.
Pada basis data pengujian kami, dibutuhkan sekitar 5 detik untuk menghitung rencana untuk prosedur yang sama.
Saya tidak melihat sesuatu yang mengerikan dalam rencana itu sendiri - walaupun saya tidak membayangkan itu relevan karena rencana tersebut menunjukkan berapa lama waktu yang dibutuhkan untuk menjalankan kueri, tidak menghitung sendiri.
Server adalah inti 16 dengan memori 24 gb. Tidak ada CPU yang berat atau beban memori yang terjadi.
Apa yang menyebabkan perhitungan lambat hanya pada basis data tertentu?
Langkah apa yang bisa saya ambil untuk menemukan penyebab masalah?
Edit
Jadi saya telah berhasil mengakses server dan menjalankan kueri dengan SET SHOWPLAN_XML ON .
Saya dapat mengonfirmasi bahwa CompileTime untuk kueri menghabiskan 99% waktu eksekusi kueri. The StatementOptmEarlyAbortReason adalah "TimeOut" , pada database uji kami dengan salinan database mereka alasannya adalah MemoryLimitExceeded.
sumber
StatementOptmEarlyAbortReason
?Jawaban:
Saya benci menjawab pertanyaan saya sendiri, terutama karena saya sudah mendapat banyak bantuan dari orang lain untuk menyelesaikan solusinya, tetapi begini saja.
Masalahnya adalah karena beberapa statistik tak berguna dalam database. Melihat rencana eksekusi, pengoptimal mengharapkan 11,5 TB data yang dikembalikan dari kueri. Pada kenyataannya adalah menerima 87kb. Saya sekarang tahu bahwa ketidakcocokan besar antara baris yang diharapkan dan aktual yang dikembalikan adalah tanda bahwa statistiknya sudah ketinggalan zaman.
Cukup berlari
memaksa database untuk memperbarui statistik untuk semua tabel.
Ini telah menurunkan waktu eksekusi permintaan dari 3 menit menjadi 6 detik. Semua orang pemenang!
Terima kasih atas semua bantuan kalian. : 0)
sumber