Kami memiliki prosedur besar (10.000+ garis) yang biasanya berjalan dalam 0,5-6,0 detik tergantung pada seberapa banyak data yang harus dikerjakan. Selama sebulan terakhir ini sudah mulai lebih dari 30 detik setelah kami melakukan pembaruan statistik dengan FULLSCAN. Ketika melambat, sp_recompile "memperbaiki" masalah, sampai pekerjaan statistik malam berjalan lagi.
Dengan membandingkan rencana eksekusi yang lambat dan cepat, saya mempersempitnya ke tabel / indeks tertentu. Ketika berjalan lambat ia memperkirakan ~ 300 baris akan dikembalikan dari indeks tertentu, ketika berjalan cepat ia memperkirakan 1 baris. Ketika berjalan lambat ia menggunakan Spool Tabel setelah melakukan pencarian pada indeks, ketika berjalan cepat itu tidak melakukan Spool Tabel.
Menggunakan DBSS SHOW_STATISTICS, saya membuat grafik histogram indeks di excel. Saya biasanya mengharapkan grafik lebih "bergulir bukit", tetapi sebaliknya, terlihat seperti gunung, titik tertinggi menjadi 2x-3x lebih tinggi daripada kebanyakan nilai lain pada grafik.
Jika saya memperbarui statistik di atasnya, tanpa FULLSCAN, itu terlihat lebih normal. Jika saya kemudian menjalankannya dengan FULLSCAN lagi sepertinya saya jelaskan di atas.
Ini terasa seperti masalah mengendus parameter, dan secara khusus terkait dengan (tampaknya) distribusi indeks aneh di atas.
Proc mengambil parameter tabel bernilai, dapatkah sniffing parameter terjadi pada parameter tabel bernilai?
EDIT: Proc juga mengambil 12 parameter lain, beberapa di antaranya opsional, dua di antaranya adalah tanggal mulai dan berakhir.
Apakah histogramnya aneh, atau saya menggonggong pohon yang salah?
Saya tentu saja nyaman mencoba menyesuaikan kueri dan / atau mencoba menyesuaikan indeks saya. Jika itu adalah perbaikan yang hebat, pada saat itu pertanyaan saya lebih tentang histogram miring.
Saya harus menyebutkan bahwa ini adalah indeks berkerumun IDENTITAS PK. Kami memiliki dua sistem yang saling berbicara, satu sistem warisan, satu sistem baru yang dikembangkan di rumah. Kedua sistem menyimpan data yang serupa. Untuk tetap menyinkronkan PK pada tabel ini di sistem baru bertambah ketika ada hal-hal yang ditambahkan ke sistem lama, bahkan jika data tidak datang (RESEED dilakukan). Jadi mungkin ada beberapa kesenjangan dalam penomoran di kolom ini. Catatan jarang, jika pernah, dihapus.
Pikiran apa pun akan sangat dihargai. Saya lebih dari senang untuk mengumpulkan / memasukkan lebih banyak info.
sumber
ParameterCompiledValue
untuk params lainnya?RANGE_HI_KEY
pada sumbu x mungkin, tetapi apa yang ada di sumbu y?EQ_ROWS
?RANGE_ROWS
? Jumlahnya?Jawaban:
Ini akhirnya terkait dengan sniffing parameter. Kebetulan beberapa versi aneh dari kueri ini dieksekusi BENAR SETELAH statistik dibangun kembali. Jadi rencana yang di-cache tidak mewakili mayoritas panggilan. Saya menggunakan trik menyalin parameter tanggal ke variabel lokal dan ini berfungsi dengan baik, dengan sedikit atau tidak ada dampak pada kinerja. Ini tidak menjawab mengapa histogram terlihat "tidak aktif", tetapi ini menjelaskan masalah kinerja saya.
sumber