STATISTICS_NORECOMPUTE kullanma önerisi


9

Son zamanlarda bazı ilginç dizin sorunları olan bir dizi veritabanının bakımında yer aldım. Beni en çok ağırlaştıranlardan biri, geliştirme, test, model ve üretim makineleri arasındaki endekslerdeki farklardır. Farklılıklar ayar sorgularını zorlaştırdığından bunları senkronize etmek ilk projelerimden biridir.

Test ve model ortamlarını karşılaştırdığımda, model ortamındaki dizinlerin çoğunun test edilenler tarafından STATISTICS_NORECOMPUTEayarlanmadığını fark ettim ON. Tüm ortamlarda, tüm veritabanlarının istatistiklerini güncelleyen her gece bir iş vardır.

Daha önce hiç ilgilenmedim STATISTICS_NORECOMPUTE, işte sorularım. Bu ortamla ilgilenirken en iyi uygulamalar var mı? Günün sonunda istatistik güncellemeleri yapıyorsam STATISTICS_NORECOMPUTE, tüm dizinlerdeki tüm ortamları açmak en iyisidir ? Yoksa yapmamak için iyi bir neden var mı?

DÜZENLEME: Kimberly Tripp'in konu hakkındaki bloglarından birini buradaSTATISTICS_NORECOMPUTE en iyi şekilde kullanılması gerektiğini öne sürdüğünü gördüm . Ama hala küresel olarak kapatmaktan endişeliyim. Kimse bunu denedi ve ne yaşadılar?


İnanmak için bu uygulamayı görmek gerekir. Bazı tabloların düzinelerce dizini vardır, bazılarının hiçbiri yoktur, birkaçının birden fazla kopyası vardır. Bu gerçek bir karmaşa. Genel yönergeler var mı? Biraz okuma yapabileceğim herhangi bir yer var mı?
Kenneth Fisher

1
İyi bir durum, değişikliklerden sonra FULLSCAN ile bir INDEX REBUILD yapan bir komut dosyası kullanarak yalnızca DBA'lar tarafından değiştirilen salt okunur arama tabloları için STATISTICS_NORECOMPUTE = ON ve FILLFACTOR = 100 kullanmaktır; tablonun optimal istatistiklerle en iyi şekilde olması ve başka bir değişiklik olmadan, istatistikleri yeniden hesaplamayı veya gelecekteki değişikliklerde sayfa bölünmelerini azaltmak için alan bırakmayı düşünmek için hiçbir neden yoktur.
Anti-zayıf şifreler

Yanıtlar:


4

Tablo başına veya dizin başına bakmak istediğiniz gerçekten durumsal bir şeydir ve herhangi bir işlem yapmadan önce üretimde neler olduğunu bulmanız gerekir. Şüphe duyduğunuzda, bir sürü çılgın ayar kullanmak anlamına gelse bile, diğer ortamlarda üretimde olanları kullanın. Test veya geliştirmede işler farklıysa, üretimin nasıl davranacağı konusunda iyi bir fikir edemezsiniz.

Her neyse, otomatik güncelleme istatistiklerini açık bırakmak için genel öneri ( STATISTICS_NORECOMPUTE = OFFvarsayılan olan) güvenlik nedenleriyle, çünkü bu kapatılırsa ve hiçbir şey istatistikleri manuel olarak güncellemiyorsa, sonuç asla değişmeyen gerçekten korkunç yürütme planları olabilir ilk oluşturulduktan sonra (ve daha sonra başka nedenlerle geçersiz kılınmayın).

Sen otomatik güncelleme istatistikleri için kapatıldı söyledi çoğu endeksler (Ben aslen yanlış okumuş düşünüyorum olarak tüm değil, en ). Otomatik güncelleme istatistiklerinin hala etkin olduğu dizinler için, bu ayar bu tablolardaki etkinlik göz önüne alındığında anlamlı mı? Bunların daha yüksek etkinlik tabloları olmasını beklerim. Bunu anlamak için çok fazla çalışma yapılmış olabilir ve bu ayarları tutmaya (veya kesinlikle dikkate almaya) değer olabilir. En azından, bunların hangi istatistikler olduğunu not edin, çünkü bu bilgiler yoldan çıkar.

Daha çok düşünerek, mevcut stratejinin mantıklı olduğunu söyleyeceğim. Her şey için otomatik güncelleme istatistiklerini açık bırakmaktan daha iyi mi? Birisi böyle düşünmüş gibi görünüyor ki, ilişkili bir SQL Agent işine sahip olmanın yönetim kolaylığı dengesine değdi.

Fikri (gibi sorguları engelleme olmadan taze istatistikler var idiyse bu ), her şey için otomatik güncelleme sırtını dönerek düşünün ve sonra da dönüşebilecek AUTO_UPDATE_STATISTICS_ASYNCde. Daha sonra, istatistiklerin yine de WITH FULLSCANperiyodik olarak güncellenmesini istediğiniz için, iş çizelgesini günlük yerine haftada bir kez çalışacak şekilde değiştirin .

Yine de bırakabilirim, çünkü endekslerin kendileri ortamlar arasında farklıysa ve istatistiklerin yeniden yapılandırılması çok acı verici değilse, muhtemelen daha büyük balıklarınız kızartır. Şimdi orada olanlar mantıklı; sadece ortamlarda işleri tutarlı hale getirmeniz gerekir. Muhtemelen, daha fazla iş yapılması pahasına, önerdiğim daha basit ayarlardan biraz daha iyidir. Ancak üretimde neler olduğunu öğrenin, bunu kullanmaya eğilimleyin ve daha önemli şeylere geçin; performansı daha hassas bir şekilde ayarlamanız gerektiğinde bunu tekrar ziyaret edin - dünyadaki en iyi istatistikler kritik bir dizini içermeyen bir sorguyu kaydetmez.


ayy ... bu yorumu göndermemeyi düşündüm.
swasheck
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.