Kapan Akan Memperbarui Statistik?

42

Saya telah mewarisi Paket Perawatan yang melakukan hal berikut:

  • Bersihkan data lama
  • Memeriksa integritas DB
  • Melakukan Pencadangan Database dan Log Transaksi
  • Reorganisasi indeks kami
  • Statistik Pembaruan
  • Hapus cadangan lama dan file Rencana Pemeliharaan

Dari Rencana Pemeliharaan 23 menit, Memperbarui Statistik membutuhkan waktu 13 menit yang mengejutkan. Selama periode 13 menit ini, akses ke database diblokir (atau setidaknya, replikasi dari DB ini ke yang lain dihentikan sementara).

Pertanyaanku adalah:

Kapan kita harus Memperbarui Statistik, dan mengapa?

Ini sepertinya jenis hal yang harus kita lakukan lebih jarang daripada setiap hari. Saya mencoba mengeluarkan kita dari pola pikir "hanya karena" melakukan Pemeliharaan yang tidak perlu.

Bawang-Ksatria
sumber
2
Seberapa sering / bagaimana baris disisipkan / diperbarui / dihapus? Bagi saya ini adalah faktor penentu.
JNK
@JNK Kami menyisipkan ~ 70.000 baris per hari di seluruh DB. Perbarui ~ 100 baris sebulan.
Onion-Knight
1 - Ini lebih relevan jika kita tahu dengan TABLE berapa banyak baris, dan 2 -sebagai persentase. 70k baris per hari ke dalam tabel 1m jauh berbeda dari pada tabel 500m
JNK
Saya akan merekomendasikan menggunakan beberapa hal seperti ola.hallengren.com/... solusi ini hanya membangun kembali / mengatur ulang dan memperbarui apa yang diperlukan dengan cara ini Anda dapat mempersingkat waktu rencana perawatan Anda dan juga menghemat banyak ruang log ..
Peter

Jawaban:

28

Jika Anda tidak memiliki jendela pemeliharaan untuk itu, memperbarui statistik setiap hari mungkin sedikit berlebihan. Terutama jika Anda mengaktifkan Statistik Pembaruan Otomatis untuk database. Di pos asli Anda, Anda mengatakan bahwa pengguna melihat penurunan kinerja karena rencana pemeliharaan ini. Apakah tidak ada waktu untuk menjalankan rencana perawatan ini? Tidak ada jendela lain? Saya melihat bahwa rencana Anda mencakup reorganisasi indeks, kapan Anda membangun kembali indeks? Ketika operasi itu terjadi, statistik secara otomatis diperbarui (asalkan tidak dimatikan untuk indeks).

Seberapa sering Anda harus memperbarui statistik sangat tergantung pada seberapa banyak modifikasi data yang diterima indeks dan data Anda . Jika ada sedikit modifikasi ( INSERT, UPDATE, DELETE) untuk data, maka Anda bisa memiliki jadwal yang lebih jarang untuk pekerjaan pembaruan statistik.

Salah satu cara untuk mengetahui apakah statistik Anda basi adalah dengan melihat rencana eksekusi dan jika Anda memperkirakan baris sangat berbeda dari baris aktual Anda yang dikembalikan maka itu merupakan indikasi yang baik bahwa interval perlu ditingkatkan. Dalam kasus Anda, Anda akan ke arah lain dan sedikit percobaan mungkin dilakukan untuk Anda. Perbarui statistik setiap minggu, dan jika Anda mulai melihat tanda-tanda statistik basi, pergilah dari sana.

Jika Anda menggunakan Statistik Pembaruan Otomatis untuk database Anda, lihat referensi ini untuk ambang saat statistik diperbarui.

Thomas Stringer
sumber
Kami Membangun kembali indeks seminggu sekali.
Onion-Knight
5
@ Onion-Knight Kemudian Anda juga memperbarui statistik sekali seminggu ketika Anda membangun kembali indeks Anda. Itu bisa mencukupi jika Anda melakukan blanket index build ulang di seluruh database.
Thomas Stringer
25

Kapan Akan Memperbarui Statistik?

jika dan hanya jika fitur statistik pembaruan otomatis tidak cukup baik untuk kebutuhan Anda. maksud saya jika statistik pembuatan dan pembaruan otomatis AKTIF dan Anda mendapatkan rencana permintaan yang buruk karena statistiknya tidak akurat atau terkini, maka mungkin ide yang baik untuk memiliki kendali atas pembuatan dan pembaruan statistik. tetapi jika Anda baik-baik saja dengan kinerja server sql dan waktu eksekusi Permintaan.

maka saya sarankan menghentikan perintah Statistik Pembaruan dari Rencana Pemeliharaan Anda

memperbarui statistik penting dan berguna 1. memungkinkan pengoptimal permintaan SQL Server untuk menghasilkan rencana kueri yang baik secara konsisten, sambil menjaga biaya pengembangan dan administrasi rendah 2. Statistik digunakan oleh pengoptimal query untuk memperkirakan selektivitas ekspresi, dan dengan demikian ukuran perantara dan hasil permintaan akhir. 3. Statistik yang baik memungkinkan pengoptimal untuk secara akurat menilai biaya dari rencana kueri yang berbeda dan kemudian memilih rencana berkualitas tinggi


Jika Anda ingin melakukan pembaruan Statistik secara manual, Anda harus terlebih dahulu tahu Kapan Statistik diperbarui secara otomatis

Jika pengoptimal permintaan SQL Server memerlukan statistik untuk kolom tertentu dalam tabel yang telah mengalami aktivitas pembaruan besar sejak terakhir kali statistik dibuat atau diperbarui, SQL Server secara otomatis memperbarui statistik dengan mengambil sampel nilai kolom (dengan menggunakan statistik pembaruan otomatis) . Pembaruan otomatis statistik dipicu oleh optimisasi kueri atau dengan eksekusi rencana terkompilasi, dan hanya melibatkan sebagian dari kolom yang disebut dalam kueri. Statistik diperbarui sebelum kompilasi permintaan jika AUTO_UPDATE_STATISTCS_ASYNC dimatikan

di sini ada artikel bagus yang berbicara tentang kapan pembaruan statistik dipicu di SQL server

  1. from simple-talk Bagian 13. Kapan Pembaruan Otomatis ke Statistik Dipicu?
  2. Bagian support.microsoft : Mengotomatiskan penentuan Autostats
  3. msdn.microsoft bagian: Mempertahankan Statistik di SQL Server 2008

setelah mengetahui kapan statistik dipicu itu akan membantu Anda memutuskan kapan akan memperbarui statistik secara manual

untuk mengetahui lebih lanjut tentang Statistik & pengaruhnya terhadap kinerja, saya merekomendasikan BrentOzar dan Kimberly dalam blog dan blogger yang sangat bagus.

AmmarR
sumber