|
|
Diposting pada 21/05/2018 13.55.48
|
|
|

Dalam dua hari terakhir, saya telah mengalami masalah yang cukup membuat frustrasi, prosedur tersimpan sekitar 120 baris dijalankan di penganalisis kueri SQL Server 2012, Kecepatannya sangat ideal, dan sekitar 500 catatan data dapat disaring dan ditangkap dalam waktu kurang dari 1 detik. Namun, ketika dipanggil dalam kode program C#, batas waktu koneksi diminta. Atur CommandTimeout ke 300, dan akan memakan waktu sekitar 3 menit untuk ditampilkan. Saya memeriksa kode beberapa kali dan tidak menemukan kesalahan. Masalahnya tetap ada.
Analisis penyebab: 1. Karena kecepatan eksekusi di query analyzer cepat dan jumlah datanya tidak besar. 2. Hanya panggilan dalam program yang lambat. 3. Atur parameter CommandTimeout, dan hasilnya dapat ditampilkan, tetapi akan memakan waktu lama.
Singkatnya, awalnya disimpulkan bahwa masalahnya terletak pada kode C#. Tapi tidak ada keuntungan setelah pemeriksaan.
Periksa informasi ini di Baidu. Akhirnya menemukan posting informasi serupa di forum CSDN. Salah satu netizen mengatakan dalam balasan, "Ada kemungkinan rencana implementasi telah kedaluwarsa", Itu benar-benar membangunkan saya dalam mimpi saya.
Lakukan segera pada penganalisis kueri:
Menguji program lagi, kali ini akhirnya berhasil. Kecepatannya sangat memuaskan.
Analisis penyebab: Karena prosedur tersimpan telah dikompilasi sebelumnya, rencana eksekusi dihasilkan pada eksekusi pertama, dan rencana eksekusi ini digunakan pada eksekusi berikutnya (kecuali prosedur tersimpan ditentukan untuk dikompilasi ulang), daripada menghasilkan rencana eksekusi setiap kali dieksekusi. Ketika struktur objek yang terlibat dalam prosedur tersimpan disesuaikan, atau data terkait berubah secara signifikan, yang dapat menyebabkan rencana asli tidak sesuai untuk status quo saat ini (kedaluwarsa rencana eksekusi), prosedur tersimpan harus dikompilasi ulang.
Terakhir, lampirkan kode untuk prosedur yang disimpan:
|
Mantan:Bagikan satu sumber kode halaman promosi APP, adaptif, sangat indah dan murah hati!Depan:C# Kerangka Kerja Sumber Terbuka (Cetak Ulang)
|