Auto Update Statistics Ascynchronously ne işe yarar?


Öncelikle SQL Server’da istatistik ve bunun otomatik güncellenmesi ne demek onu söyleyelim.

SQL Server’da Query Optimizer, bir sorgunun nasıl çalıştırılacağıyla ilgili alternatifleri inceleyip karar veren bir yapıdır. Bu kararı verirken veri dağılım şeklinin çok önemli olduğu durumlar da olur. Mesela bir koşul acaba 100 bin satırdan 3’ünü mü döndürüyor yoksa 30 bini mi, bunu bilmesi gerekir ki indeks kullanıp kullanmamaya karar versin.

Bu tür bilgileri verinin kendisinden tam detayıyla incelemek işin nasıl yapılacağına karar verme aşamasında düşünülebilecek bir yöntem değildir. Bunun yerine kolonlarla ilgili tutulan istatistik bilgileri kullanılır. Bu bilgiler, küçük tablolar için kolon içeriğini aynen içerebileceği gibi daha büyük tablolarda bir örnekleme şeklinde de olabilir.

Ama tabii veriler sabit durmaz, değişirler. Dolayısıyla istatistiklerin de güncellenmesi gerekebilir. Normalde bir SQL Server veritabanının özellikleri içinde Auto Create Statistics ve Auto Update Statistics açık durumdadır, yani bu işler sizin için yapılır.

Bazı durumlarda ise, istatistiklerin otomatik güncellenmesi bir sorun doğurabilir. Eğer sorgularınız için timeout süresi varsa ve bu kısa bir süreyse, sorgunun optimizasyonu sırasında istatistiğin güncellenmesi sorgunun toplam zamanını artırma etkisi yaparak timeouta sebep olabilir. Böyle bir durumda kalma riskiniz varsa SQL 2005’ten itibaren gelen Auto Update Statistics Asynchronously özelliğini kullanabilirsiniz. Bu özellik, istatistiklerin başka bir arkaplan işlemi tarafından mevcut sorgunun kapsamı dışında güncellenmesini sağlar. Böylelikle istatistiklerin güncellenme ihtiyacını tetikleyen sorgu eski istatistikle çalışmış olur ama onun sayesinde arkaplanda yapılmaya başlanan güncellemenin bitmesinden itibaren diğer sorgular istatistiğin güncel halini kullanarak optimize edilebilir.

Not: Bu özelliğe SSMS’de ilgili database’i sağ tıklayıp properties’den options sayfası üzerinden ulaşabilirsiniz. (Yerini belirtmediğimi hatırlatan Mehmet Güzel’e teşekkürler.)

Bu yazı SQL Server içinde yayınlandı ve , olarak etiketlendi. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s