Alasan untuk menonaktifkan pembaruan otomatis statistik?

13

Saya baru tahu bahwa perusahaan klien tempat saya bekerja telah memutuskan untuk menonaktifkan opsi statistik pembaruan otomatis untuk beberapa SQL Server mereka, dan DBA secara manual memecahkan masalah kinerja saat muncul.

Namun, jenis ini tidak masuk akal bagi saya. Mengapa Anda ingin mencegah statistik diperbarui?

Alfa
sumber

Jawaban:

11

Saranku:

  • Biarkan 'pembaruan otomatis statistik' aktif (sampai Anda menemukan alasan yang sangat bagus untuk tidak melakukannya) - Anda tidak ingin penghapusan besar di tengah hari untuk membatalkan rencana kueri hingga saat berikutnya Anda menjalankan pemeliharaan.
  • Namun, jadwalkan indeks pemeliharaan / perbarui statistik pada waktu yang tenang. sp_updatestatsakan memperbarui semua statistik untuk semua tabel dalam database untuk Anda, tetapi itu juga akan menyebabkan kompilasi proc yang disimpan, jadi pilih waktu Anda dengan hati-hati (yaitu sp_updatestatstepat sebelum pelaporan akhir bulan Anda mungkin kurang optimal).

Seberapa sering Anda perlu menjalankan pemeliharaan indeks / membangun kembali statistik tergantung pada beban basis data Anda, khususnya seberapa sering data Anda dimodifikasi (yaitu INSERT/ UPDATE/ DELETE). Jika Anda memodifikasi data di seluruh acara (yaitu tabel pementasan untuk proses batch mingguan), Anda mungkin ingin memperbarui statistik / mengatur ulang indeks setiap malam. Jika data Anda lebih statis, Anda mungkin dapat membuatnya jadwal mingguan atau dua minggu.

Simon Righarts
sumber
7

Saya hanya pernah melihatnya sekali dengan aplikasi buruk yang memiliki banyak tumpukan indeks dan ETL berat.
Ini sampah dan untungnya bukan milikku.

Kalau tidak, tidak ada alasan.

Jika Anda mendapatkan pembaruan statistik pada waktu yang tidak tepat maka itu berarti Anda melakukan pemeliharaan indeks / statistik yang salah atau menghapus / memuat banyak yang mencapai ambang batas.

Dengan SQL Server 2005+ Anda dapat menunda pembaruan statistik.
Lihat "Kapan Menggunakan Pembaruan Statistik Sinkron atau Asinkron"

Akan menarik untuk melihat artikel apa yang telah mereka ikuti atau baca untuk membuat pilihan ini ...

gbn
sumber
Apakah ini mungkin masalah warisan? Apakah pemeliharaan statistik berbeda dalam 2k?
JNK
@JNK: IIRC beberapa perubahan pada ambang perubahan baris tapi saya harus mencarinya ... ah ya, sekarang dilacak per kolom tidak per tabel msdn.microsoft.com/en-us/library/ms190283.aspx
gbn
Apakah 20% pada 2008?
JNK
20% + 500 untuk> 500 per kolom sejak SQL Server 2005+
gbn
7

Satu-satunya saat saya mematikan statistik otomatis adalah ketika saya menggunakan beberapa perintah tidak berdokumen untuk membuat beberapa statistik palsu yang saya tidak ingin sistem untuk menghapus karena data sedang dimuat. Ini adalah kasus yang SANGAT tepi.

mrdenny
sumber
5

Di masa lalu (SQL Server 2000) memiliki pengaturan pembaruan statistik otomatis dapat mengakibatkan "jeda" besar dalam aplikasi OLTP ketika SQL memutuskan untuk melakukan pembaruan statistik.

Dari SQL Server 2005 dan seterusnya ada opsi asinkron yang tidak akan menghasilkan "jeda" ketika statistik kedaluwarsa dan kemudian dikompilasi ulang. Statistik akan dikompilasi ulang secara tidak sinkron untuk keperluan berikutnya.

Ingatlah bahwa ada keseimbangan yang harus dimiliki - untuk kumpulan data besar, Anda mungkin ingin kueri saat ini mengambil statistik terbaru ke dalam akun, karena kueri dapat memakan waktu lebih lama secara eksponensial dengan rencana kueri yang tidak efisien.

Anda juga dapat memantau jumlah kompilasi ulang per detik dan metrik kinerja penting lainnya menggunakan penghitung perfmon yang diterbitkan oleh SQL Server, seperti yang mereka katakan, buktinya ada di puding.

ifx
sumber
4

Seberapa aktif sistemnya?

Jika sebagian besar merupakan sistem yang Anda baca, Anda mungkin mendapatkannya tanpa memperbarui, jika mereka melakukannya secara manual ketika mereka mengubah data (masukkan, perbarui, hapus).

Namun untuk praktik terbaik disarankan tetap dijaga karena menurut saya jarang terjadi masalah kinerja. Saya mungkin akan mengirim mereka artikel dan posting blog yang menyarankan agar dibiarkan. Kimberly Tripp memiliki beberapa yang bagus.


sumber
4

Meskipun saya tidak akan pernah bertentangan atau sengaja melecehkan MrDenny dengan cara apa pun (terlalu banyak menghargai pengetahuan dan kontribusinya pada komunitas), saya melihat dokumentasi MS merekomendasikan menonaktifkan statistik pembaruan otomatis.

Pada Penyimpanan dan perencanaan kapasitas SQL Server dan konfigurasi (SharePoint Server 2010) MS merekomendasikan untuk mematikannya.

Saya juga membaca rekomendasi yang sama oleh MS untuk versi SP sebelumnya tetapi tidak dapat menemukan tautannya sekarang.

Tapi saya BUKAN SP Pakar DBA sehingga Anda mungkin juga ingin memeriksa apa yang dikatakan Chun Liu, MS Permier Field Engineer, tentang hal itu di Chun Liu di SharePoint atau abaikan saja posting ini dan biarkan saja.

Bruce
sumber
5
Saran Anda khusus untuk database SharePoint, itu umumnya tidak berlaku untuk semua instalasi SQL Server.
Simon Righarts
0

Anda biasanya mematikannya jika Anda memiliki metode untuk memperbaruinya sendiri. Saya melakukan ini sepanjang waktu karena kita perlu pengambilan sampel yang lebih baik atau berbeda dari statistik otomatis. Itu cukup umum tetapi Anda tidak akan mematikannya dan tidak melakukan hal lain.

Andrew J. Kelly
sumber