DBCC SHOW_STATISTICS Nedir ve Nasıl Kullanılır

25 Eki by NURULLAH ÇAKIR

DBCC SHOW_STATISTICS Nedir ve Nasıl Kullanılır

DBCC SHOW_STATISTICS ile bir istatistik hakkında detaylı bir bilgi alabiliriz. Çoğunuzun bildiği gibi istatistikler query plan oluşturulurken sql server engine’in karar vermesindeki en önemli rollerden birine sahiptir. SQL Server Engine istatistiklere bakılarak bir index’in kullanılıp kullanılmayacağına ya da ne şekilde kullanılacağına karar verir. Bu yüzden herşeyden önce istatistiklerimizin güncel olması gerekir.

 

Bu makaleyi okumadan önce bu komuta neden ihtiyacınız olduğunu daha iyi anlamak için aşağıdaki makaleleri okumanızı tavsiye ederim.

 

SQL Server’da İstatistik Kavramı ve Performansa Etkisi“,

SQL Server’da Index Kavramı ve Performansa Etkisi“,

Execution Plan Nedir

 

DBCC SHOW_STATISTICS bir tablo’daki veya indexed view’deki bir istatistik hakkında detaylı bilgileri gösterir.

 

Bu komutun çıktısı 3 öğeden oluşur.

 

  • Statistic Header
  • Density Vector
  • Histogram

 

Bir örnek üzerinden yukardaki kavramları ve detaylarını açıklayalım. AdventureWorks veritabanında aşağıdaki komutu çalıştırın.

 

Bu komutta,

 

HumanReources şema adını,

 

Department tablo adını,

 

AK_Department_Name’de istatistik adını belirtiyor.

 

 

DBCC SHOW_STATISTICS([HumanResources.Department],[AK_Department_Name])

 

 

Karşımıza aşağıdaki gibi bir sonuç kümesi çıkıyor.

 

 

Aşağıdaki tablolarda sonuç kümesinde gelen kolonların açıklamalarını görebilirsiniz.

Statistic Header

 

Name

İstatistik ismi

Updated

İstatistiğin son update edildiği tarih

Rows

İstatistik son update edildiğinde bağlı olduğu tablo ya da indexed view üzerindeki satır sayısını gösterir.

Rows Sampled

İstatistiği oluştururken ya da güncellerken örnek alınan satır sayısıdır. “UPDATE STATISTICS Nedir” isimli makalede daha detaylı bilgi bulabilirsiniz.

Step

Histogram’daki step sayısını belirtir. Histogram kısmında değineceğiz.

Density

SQL Server 2008’den sonraki sürümlerden sonra kullanılmamıştır.

Average Key Length

İstatistiği oluşturan kolonların byte cinsinden ortalama büyüklük değeri

String Index

Eğer istatistiği oluşturan kolonlar char, varchar, nchar, nvarchar, varchar(max), nvarchar(max), text, veya ntext kolonlarından biriyse bu kolon YES değerini alır.

Filter Expression

Eğer istatistik filtrelenmişse filtre ifadesini gösterir.

Unfiltered Rows

Filtrelenmemiş satır sayısını gösterir. Eğer filtre yoksa istatistiğin bağlı olduğu tablo ya da indexed view’deki satır sayısını verecektir.

 

 

Density Vector

 

All Density

1/n değerini ifade eder. Buradaki en tablodaki birbirinden farklı kayıt sayısıdır. Bu satır 0’a ne kadar yakında tekillik o kadar sağlanmış demektir.

Average Length

İstatistiği oluşturan kolonların byte cinsinden ortalama büyüklük değeri

Columns

Bir önceki iki kolondaki All Density ve Average Length’in hangi kolonlar için hesaplandığını gösterir.

 

 

Histogram

Veri dağılımını gösteren grafik. SQL Server bir istatistiği oluştururken öncelikle kolon değerlerini sıralar. Sonrasında  verileri belirli gruplara ayırır ve her grubun üst sınırını belirler. Örneğin 1’den 1000’e kadar değeri olan bir kolon olduğunu düşünün. Bu kolonda istatistik oluşurken veriler gruplandı ve 100’e bölündü.  Bu 100 parça’nında 1’den 10’a kadar, 10’dan 20’ye kadar şeklinde ayrıldığını varsayalım. Burada 1’den 10’a kadar olan kısım 1 step olarak geçer. 100’e bölündüğü içinde bu istatistiğin histogramında 100 step var demektir.

RANGE_HI_KEY

Histogram step’i için üst sınırı belirten key değeri. Yani verilerin dağılımında her step’i birbirinden ayıran bir çizgi.

RANGE ROWS

Bir histogram adımı(step) başına düşen tahmini satır sayısı

EQ_ROWS

Bir üst sınır’a eşit olan kayıt sayısı

DISTINCT_RANGE_ROWS

Bir histogram adımı(step) başına düşen tahmini duplike olmayan satır sayısı

AVG_RANGE_ROWS

İlgili stepteki(histogramdaki satır) duplike kayıt sayısı

 

Loading

Bir yanıt yazın

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