IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   MsSQL (https://www.ircforumlari.net/mssql/)
-   -   SQL Server – İstatistik (Statistic) Nedir (https://www.ircforumlari.net/mssql/559147-sql-server-istatistik-statistic-nedir.html)

SeckiN 29 Aralık 2013 03:19

SQL Server – İstatistik (Statistic) Nedir
 
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.

İstatistikler sayesinde, sorgu planı (Query Plan) oluşturulurken sorgudaki where bloğunda kullanılan kolon için dönecek tahmini kayıt sayısı bulunur. Bulunan bu değer index’e erişim şeklini belirler. Temel amaç, datayı en hızlı ve en az maliyetli şekilde kullanıcının karşısına getirmektir.

İstatistikler Management Studio’da index listesinin hemen altında bulunurlar.

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

TSQL ile de istatistiklerin sorgulanması mümkündür. Bunun için sys.stats Catalog View’i kullanılabilir.

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

AdventureWorks2012 DB’si üzerinde Sales.Customer Tablosuna ait Stats bulmamızı sağlıyor. Örnek Resim aşağıdadır.

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

sys.stats, istatistiklerin isim, otomatik oluşturulup oluşturulmadığı gibi genel bilgilerini vermektedir. İstatistiğin hangi kolonlar üzerine oluşturulduğuna bakmak için sys.stats_columns Catalog View’i kullanılabilir.

Tablo üzerinde bulunan istatistiklere ve bu istatistiklerin hangi kolonlar üzerine oluşturulduğuna sp_helpstatssistem SP’si ile daha kolayca bakılabilir. sp_helpstats ile Sales.Customer tablosunda bulunan istatistikleri aşağıdaki şekilde sorgulayabiliriz.

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Tablo üzerinde bulunan istatistiklerin tümünün bir diğer sorgulanma şekli de sp_statistics sistem SP’sinin kullanılmasıdır. Bu SP, sp_helpstats’a oranla daha fazla detay bilgi getirmektedir.

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Tablo üzerine index oluşturulduğu zaman index’te kullanılan ilk kolon için istatistik otomatik olarak oluşturulur. Diğer kolonlar için ise, eğer bu kolonlar sorgunun where bloğunda kullanılırsa veAuto_Create_Statistics veritabanı özelliği aktif ise otomatik olarak istatistik oluşturulacaktır. Sonraki yazılarda bu konuya tekrar değineceğim.

İstatistik otomatik olarak oluşturulabileceği gibi CREATE STATISTICS komutu ile elle oluşturulabilir. Örneğin Person.Address tablosunda bulunan PostalCode kolonu için istatistik oluşturmak için aşağıdaki komutu kullanabiliriz.

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

İstatistik oluşturulma ya da güncellenme aşamasında, tablonun boyutu 8 MB’dan büyük ise tablodan rasgele kayıtlar seçilerek örnekleme yapılır. Aksi durumda yani tablo 8 MB’dan küçük ise örneklem olarak tablonun tamamı kullanılır yani istatistik kolonu için bütün tablo okunur. Bu durum “FullScan” olarak ifade edilmektedir.
Tablonun 8 MB’dan büyük olduğu durumlarda gene de FullScan yapılması isteniyorsa, istatistik oluşturma komutu “FULLSCAN” anahtarı ile çalıştırılır.

Yukarıdaki şekilde tablo bazıdna istatistik oluşturulabileceği gibi veritabanında bulunan bütün kolonlar için topluca istatistik oluşturulması mümkündür. Bu amaç için kullanılan obje sp_createstats sistem prosedürüdür. Örneğin aşağıdaki kod ile veritabanında bulunan bütün uygun kolonlar için istatistik oluşturulabilir. (Live Sistemde uygularken dikkatli olmalısınız.)

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Veritabanındaki tablolarda tanımlı istatistiklerin kapsamı dışında kalan kolonlara istatistik oluşturmak için aşağıdaki komutu kullanabiliriz. Bu komut veritabanında bulunan tüm kolonlar için değil sadece index’lerin birincil olmayan kolonları için istatistik oluşturulacaktır.

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

8 MB’dan büyük tablolarda örneklemin rasgele kayıtlardan değil bütün kayıtlardan yapılabilmesi için sp_createstats sistem prosedüründe FULLSCAN parametresi kullanılabilir.

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 11:06.

Powered by vBulletin® Version 3.8.8 Beta 3
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2024 IRCForumlari.Net