Apakah ada alasan untuk memperbarui statistik secara manual?


19

Di SQL Server, statistik diperbarui secara otomatis ketika Auto Update Statisticsdalam True(yang merupakan default). Apakah ada alasan untuk memperbarui statistik secara manual dan dalam keadaan apa?

Jawaban:


21

Tentu, jika data Anda berubah lebih sering daripada laju statistik otomatis (atau, katakanlah, Anda memperbarui <20% dari baris secara rutin, seperti memperbarui status atau cap tanggal / waktu). Atau jika meja Anda besar dan tidak cukup berubah untuk memicu pembaruan statistik otomatis. Atau jika Anda telah memfilter indeks ( karena ambang statistik otomatis masih didasarkan pada% perubahan di seluruh tabel, bukan% perubahan dari subset baris dalam indeks yang difilter ).


+1 untuk indeks yang difilter. Saya pikir itu alasan utama, atau pada set data SANGAT besar. Saya memiliki tabel yang saya sisipkan 30m baris sebulan, tetapi ini adalah persentase kecil sehingga statistik biasanya tidak diperbarui kecuali saya memulai secara manual.
JNK

+1 Juga, Anda melakukannya dengan jadwal untuk mengatur ulang penghitung, berarti lebih sedikit peluang di luar jendela perawatan Anda.
gbn

7

Beberapa lagi alasan (dangkal):

Statistik pembaruan otomatis akan memblokir kueri yang memicu pembaruan hingga statistik baru siap.

... Kecuali Anda juga mengaktifkan statistik pembaruan otomatis secara tidak sinkron. Maka kueri yang memicu pembaruan tidak akan menunggu statistik baru, tetapi berpotensi akan berjalan dengan statistik lama yang salah.

Saya juga mengalami beberapa masalah pemblokiran aneh ketika database dengan beberapa tabel yang relatif besar (baris 44M, 8,5 GB) akan mulai memperbarui statistik. Kami menonaktifkan aplikasi itu sebelum saya benar-benar dapat melacak apa yang sedang terjadi.


1
+1 Itu poin bagus tentang pemblokiran dan opsi async.
Aaron Bertrand

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.