Saya menggunakan SQL SERVER 2012
saya memiliki Auto Update Stats
ON saya di database saya.
Dari tautan di bawah ini saya mengetahui bahwa, statistik Pembaruan Otomatis akan diaktifkan untuk setiap SQRT(1000 * Table rows)
perubahan dalam baris tabel.
https://blogs.msdn.microsoft.com/srgolla/2012/09/04/sql-server-statistics-explained/
Saya membuat tabel dengan 1000 catatan
SELECT TOP 500 Row_number()OVER (ORDER BY (SELECT NULL)) rn,
name
INTO stst
FROM sys.objects
Membuat statistik
CREATE STATISTICS rn
ON stst (rn)
CREATE STATISTICS name
ON stst (name)
Memeriksa Statistik yang dibuat
DBCC show_statistics('stst', rn) -- Rows 500
DBCC show_statistics('stst', name) -- Rows 500
Sesuai formula
select SQRT(1000 * 500) -- 707.106781186548
Jadi, jika saya menambah / memodifikasi 707.106781186548
catatan di tabel saya, statistik pembaruan otomatis akan diaktifkan
Tambahkan 1000
lebih banyak catatan ke meja saya yang seharusnya lebih dari cukup untuk dipecatauto update stats
INSERT INTO stst(rn,name)
SELECT TOP 1000 Row_number()OVER (ORDER BY (SELECT NULL)) rn,
a.name
FROM sys.objects a
Untuk menembakkan auto update stats
Select * from stst
Memeriksa statistik
DBCC show_statistics('stst', rn) -- Rows 500
DBCC show_statistics('stst', name) -- Rows 500
Sayangnya masih Rows
adalah 500
saja.
Bahkan setelah memasukkan 1000
catatan ke meja saya yang jelas lebih besar daripada 707.106781186548
saat melakukan SELECT
mengapa statistik Pembaruan Otomatis tidak diaktifkan? Apa yang kulewatkan di sini
sumber
Jawaban:
Perhitungan baru hanya digunakan jika jejak bendera 2371 diaktifkan, kecuali pada SQL Server 2016 ketika tingkat kompatibilitas basis data konteks diatur ke 130, di mana itu adalah perilaku default. Lihat Microsoft KB 2754171:
Mengontrol perilaku Autostat (AUTO_UPDATE_STATISTICS) dalam SQL Server
Statistik tidak diperbarui ketika data diubah. Pembaruan statistik dipicu ketika optimasi berbasis biaya menemukan bahwa statistik yang menarik untuk kueri basi.
Pengoptimal tidak memasukkan pengoptimalan berbasis biaya untuk kueri yang sangat sederhana ("sepele"), di mana satu rencana jelas selalu optimal. Tidak ada pembaruan statistik yang terjadi dalam skenario itu.
Lihat Microsoft White Paper Plan Caching dan Recompilation di SQL Server 2012 oleh Greg Low.
sumber