UPDATE STATISTICS Nedir

25 Eki by NURULLAH ÇAKIR

UPDATE STATISTICS Nedir

Bu makalede istatistik, tablo ya da veritabanı bazında istatistiklerinizi UPDATE STATISTICS komutuyla nasıl güncelleyebileceğimizi anlatacağım. Bu makaleden önce “SQL Server’da İstatistik Kavramı ve Performansa Etkisi” isimli makaleyi okumanızı öneririm.

 

 

Aşağıdaki script yardımıyla HumanResources şemasındaki Department tablosunda bulunan AK_Department_Name isimli index’e ait istatistiği güncelleyelebilirsiniz.

USE AdventureWorks2014Yeni
GO 
UPDATE STATISTICS [HumanResources].[Department] [AK_Department_Name] 
GO 

 

 

Aşağıdaki script yardımıyla HumonResource şemasındaki Department tablosundaki tüm istatistikleri güncelleyebilirsiniz.

USE AdventureWorks2014Yeni
GO 
UPDATE STATISTICS [HumanResources].[Department]
GO 

 

Aşağıdaki script yardımıyla da veritabanındaki tüm istatistikleri güncelleyebilirsiniz.

USE AdventureWorks2014Yeni
GO 
EXEC sp_updatestats

 

İstatistikleri güncellerken aşağıdaki 3 seçenekle güncelleme yöntemini belirleyebilirsiniz.

 

  1. FULLSCAN
  2. SAMPLE
  3. RESAMPLE

 

FULLSCAN: Bu yöntemde istatistiğin bağlı olduğu tablo ya da indexed view’deki tüm satırları tarayarak istatistiği günceller. Bir istatistiği update etmek için aşağıdaki şekilde çalıştırabilirsiniz.

 

USE AdventureWorks2014Yeni
GO 
UPDATE STATISTICS [HumanResources].[Department] [AK_Department_Name]  WITH FULLSCAN
GO 

 

SAMPLE: SAMPLE ifadesinden sonra belirttiğiniz satır sayısı ya da yüzde kadar satırı örnek alarak istatistiği günceller. Bir istatistiği update etmek için aşağıdaki şekillerde çalıştırabilirsiniz.

 

 

--tablodaki satır sayısı 16 iken ben 10 satırı örnek alarak bu istatistiği güncellemesini istedim.
--tablodaki satır sayısını Select Count(*) FROM [HumanResources].[Department] ile ya da
--sp_spaceused '[HumanResources].[Department]' sonucunda gelen rows kısmından öğrenebilirsiniz.
USE AdventureWorks2014Yeni
GO 
UPDATE STATISTICS [HumanResources].[Department] [AK_Department_Name]  WITH SAMPLE 10 rows
GO

 

--Aşağıdaki script ile de istatistiğin bağlı olduğu tablo ya da indexed view'deki
--satır sayısının %50'sini örnek alarak istatistiği güncelliyor.
USE AdventureWorks2014Yeni
GO 
UPDATE STATISTICS [HumanResources].[Department] [AK_Department_Name]  WITH SAMPLE 50 PERCENT
GO 

 

RESAMPLE: İstatistiği en son örnek alınan oranı baz alarak günceller. Fakat önceki sefer WITH FULLSCAN ile güncellediyseniz RESAMPLE ile çalıştırdığınızda istatistiği FULLSCAN ile güncelleyecektir.

 

Ben bu parametreyi çok tavsiye etmiyorum. Çünkü geçmişte sorun çözmek için bir istatistiği WITH FULLSCAN ile güncellemiş olabilirsiniz. Normal bakım job’larını kullanarak RESAMPLE ile istatistikleri güncellediğinizde bu istatistik sürekli olarak WITH FULLSCAN ile güncellenecek ve gereksiz yere istatistik güncelleme job’ını uzatacaktır.

 

Aşağıdaki şekilde çalıştırabilirsiniz.

 

USE AdventureWorks2014Yeni
GO 
UPDATE STATISTICS [HumanResources].[Department] [AK_Department_Name]  WITH RESAMPLE
GO 

 

 

Veritabanı bazında da aşağıdaki şekilde tüm istatistikleri RESAMPLE parametresiyle güncelleyebilirsiniz.

 

EXEC sp_updatestats RESAMPLE

 

NOT: Benim tavsiyem bir problem olmadığı sürece istatistikleri herhangi bir parametre vermeden default olarak güncellemenizdir. Çünkü SQL Server Query Optimizer, en iyi query plan’ı oluşturmak için örneklenmesi gereken satır sayısını kendi belirler.

 

Bir istatistik hakkında detaylı bilgi almak için DBCC SHOW STATISTICS komutunu çalıştırabilirsiniz. “DBCC SHOW_STATISTICS Nedir ve Nasıl Kullanılır” isimli makalede detayları bulabilirsiniz.

Loading

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir