SlideShare a Scribd company logo
1 of 22
Turgay Sahtiyan
Eurobank Tekfen – Veritabanı Yöneticisi
Microsoft MVP – SQL Server
SQL Server DBA – Eurobank Tekfen
Konuşmacı/Yazar/Lider - SQL Server Öncüleri
  E-mail : turgay@turgaysahtiyan.com
  Blog : www.turgaysahtiyan.com
10+ Webcast
MS Technet Türkiye - Whitepaper
SQLPass Turkey Chapter Leader
Microsoft MVP – SQL Server
Index
 Neden Index ?
 Clustered Index – NonClustered Index
 Clustered Index’in Önemi
 NC Index’lerde Included Column Kullanımı
 DMV’ler ile Index Analizi

İstatistik (Stats)
 İstatistik Nedir ?
 İstatistik Nasıl Oluşur ?
 İstatistik Nasıl Güncellenir ?
 Veritabanı İstatistik Özellikleri
   Daha az IO
   Veriye daha hızlı erişim
   Table Scan <> Index Search
   Tamamlanması saatler süren
    bir sorgunun uygun index’ler
    kullanılarak saniyeler
    seviyesinde getirilmesi
    sağlanabilir.
   Telefon rehberi
   Gerekli index’ler faydalı
    olduğu gibi çok fazla index
    kullanımı OLTP işlemlerde
    performans sıkıntısı doğurur.
     1 Level Root
                                                                             NonLeaf Level
       1 veya 1’den fazla Intermediate Level
       1 Level Leaf

NonLeaf Level Page’ler sadece navigasyon için kullanılır. Veri dönüş işlemi NonLeaf Level
Page’lerden değil Leaf Level Page’lerden yapılır.
Bir Index’in Page’leri
• DBCC IND ( {'dbname' | dbid}, tablenum, indexnum )

 DBCC IND('AdventureWorks','tblIndexDeneme1',1)

Bir Page’in İçeriği
• DBCC PAGE ( {'dbname' | dbid}, filenum, pagenum [, printopt={0|1|2|3} ])

 DBCC PAGE('AdventureWorks',1,24044,3)

Leaf Level Data Page’lerin İçeriğini Görmek İçin
• DBCC TRACEON (3604)
   Clustered Index = Fiziksel Index
   Diskte veriler mantıksal olarak sıralı tutulurlar.
    (Page Chain)
   Bir tabloda sadece 1 adet Clustered Index
    bulunabilir.
   Leaf Level = Datanın Kendisi
   Ada göre sıralı bir telefon defteri Clustered Index
    için iyi bir örnektir.
 Telefon defteri için mesleki bir index
  yapmak iyi bir NonClustered Index
  örneğidir.
 Leaf Level = Row Locator + Included
  Kolonlar
 Row Locator Heap ya da Clustered
  Index durumuna göre farklılık gösterir.
        Heap -> Dosya Numarası (File Identifier)
                 + Sayfa Numarası (Page Number)
                 + Kayıt Numarası (Slot Number)
        Clustered Index -> Clustered Index Keys
                            + (UNIQUIFIER)
 Maksimum NonClustered Index Sayısı
    SQL Server 2005 – 249
    SQL Server 2008 – 999







10 Milyon kayıda ve 1 CL, 8 NC index’e Sahip Tablo Örneği
          Clustered Index Key Açıklaması         CL Key    Kayıt Sayısı   NC Index     MB
                                                  Size                     Sayısı
integer                                          4 byte    10.000.000        8       305,18

Datetime                                         8 byte    10.000.000        8       610,35

Datetime + Integer                               12 byte   10.000.000        8       915,53

Guid                                             16 byte   10.000.000        8       1.220,70

Composite                                        32 byte   10.000.000        8       2.441,41

Composite                                        64 byte   10.000.000        8       4.882,81
Kaynak : Kimberly L. Tripp – www.sqlskills.com
Peki ya 100.000.000 kayıt ve 12 NC var ise?
          Clustered Index Key Açıklaması         CL Key    Kayıt Sayısı   NC Index     MB
                                                  Size                     Sayısı
integer                                          4 byte    100.000.000      12       4.577,64

Datetime                                         8 byte    100.000.000      12       9.155,27

Datetime + Integer                               12 byte   100.000.000      12       13.732,91

Guid                                             16 byte   100.000.000      12       18.310,55

Composite                                        32 byte   100.000.000      12       36.621,09

Composite                                        64 byte   100.000.000      12       73.242,19
Kaynak : Kimberly L. Tripp – www.sqlskills.com


+70 GB’ın getirdiği yük
    •     Disk
    •     Memory
    •     Backup
    •     Insert / update performansı
• Unique
   • Olmazsa: UNIQUFIER (4byte)
• Static
   • Olmazsa: Update’ler NC’lerde de yapılır, CL’de Page Split’e ve
       Fragmantasyona sebep olur.
• Küçük Boyutlu
   • Olmazsa: NC’lerde gereksiz alan kullanımı
• Non-Nullable
   • Olmazsa: 3 byte’lık gereksiz alan kullanımı
• Sürekli Artan
   • Olmazsa: Page Split ve Fragmantasyona sebep olur.




                             Identity
 SQL Server 2005 ile gelen bir özelliktir.
 Amaç sorguyu cover edip lookup yapmamaktır.
 Covering Index : Lookup yapma ihtiyacı olmadan
  istenen tüm bilgileri leaf level page’lerinde bulunduran
  NonClustered Index’lerdir.
 Included kolonlar sadece Leaf Level Page’lerde
  bulunur.




                            %1
      Composite Index                 Included Column Index
        25.21 MB                             25.02 MB
•Index Kullanım İstatistikleri

•Kullanılmayan Index’ler

•Fragmante Olan Index’ler

•Eksik Index (Missing Index) Analizi
Index = Horse Power
Clustered - NonClustered Index
Index’lerde B-Tree Yapısı
Index Maintenance
Index Kullanım İstatistiklerinin
 Analizi
Eksik Index Analizi
   AdventureWorks.Person.Address
     AddressID – Clustered Index
     City – NonClustered Index




   26 satır
   NonClustered Index Seek + LookUp




   141 Satır
   Clustered Index Scan
   Tabloda bulunan verilerin dağılımını
    gösterir.

   Sorgu planı (Query Plan)
    oluşturulurken kullanılır.

   Estimated Rows’u bulmaya yarar.

   Hangi Index’e hangi yöntem ile
    erişileceğini belirlemek için kullanılır.

   Kayıtları okumadan ne kadar kaydın
    döneceğini tahminlemek ancak
    İstatistik kullanımı ile mümkündür.
   İstatistik delete-insert-update modifikasyon işlemleri ile
    güncelliğini yitirir.

   Doğru tahminleme yapabilmek için istatistiğin olması
    kadar güncel olması da çok önemlidir.




                          DEMO
   Index oluşturulduğu zaman. (Bu şekilde oluşan
    istatistiklerin ismi Index’in ismi ile aynıdır.)

   Composite Index >> Sadece ilk kolon

   Auto_Create_Statistics

   İstatistik CREATE STATISTICS komutu ile manuel
    olarak oluşturulabilir.
     8 MB’dan küçük ise Full Scan
     8 MB’dan büyük ise Random Record
   İstatistiğin güncellenme tarihine bakmak için;
     sp_autostats
     DBCC SHOW_STATISTICS
     STATS_DATE

   İstatistiği manuel güncellemek için;
     UPDATE STATISTICS
     sp_updatestats (sysindexes.rowmodctr değerine göre karar verilir.)

   Auto_Update_Statistics

   Auto_Update_Statistics_Aysnc

   Index Rebuild
   DBCC SHOW_STATISTICS ('Person.Address',IX_City)
   Range_Rows : x kayıdı ile histogramdaki bir önceki
    değer arasında bulunan kayıt sayısını verir.
    select * from Person.Address where City>'Bonn' and City<'Bottrop‘
   EQ_Rows : City kolonu x olan kayıt sayısını verir.
    select * from Person.Address where City='Bottrop‘
   Distinct_Range_Rows : x ile bir önceki kayıt
    arasındaki tekil City sayısını verir.
    select City from Person.Address where City>'Bonn' and City<'Bottrop' group by
    City
   Avg_Range_Rows : x ile bir önceki kayıt arasındaki
    kayıtların her birine düşen ortalama (tahmini) kayıt
    sayısını verir.
   Maksimum 200 step olabilir.
   200 Step’in yetmediği durumlarda Filtered Stats ile
    daha detaylı istatistikler oluşturulabilir. (SS 2008)
Veritabanı İstatistik Özellikleri
    Auto_Create_Statistics
      Aktif ise where bloğunda kullanılan kolonlar için
        otomatik olarak istatistik oluşturulur.
      Bu özellik ile otomatik olarak oluşturan istatistikler
        _WA_ ön eki ile başlar.
    Auto_Update_Statistics
      İstatistik, tablodaki kayıtların %20+500 adedi
        değiştikten sonra ilk kullanılmak istendiğinde
        güncellenir.
      Kaç kaydın güncellendiği bilgisi sysindexes.rowmodctr
        kolonunda tutulur.
      İstatistiğin çok sık güncellenmesi ReCompile’dan
        dolayı performans sıkıntısına sebep olabilir.
    Auto_Update_Statistics_Aysnc
      Auto_Update_Statistics ile beraber çalışır.
      İstatistik güncellenme işleminin asenkron olarak
        gerçekleşmesini sağlar.
      Sorgular istatistik güncellenme işlemini beklemedikleri
        için performans artışı sağlar.
www.sqlserveronculeri.com
  www.turgaysahtiyan.com
turgay@turgaysahtiyan.com

More Related Content

What's hot

Qlik Replicate - Control Tableの詳細
Qlik Replicate - Control Tableの詳細Qlik Replicate - Control Tableの詳細
Qlik Replicate - Control Tableの詳細QlikPresalesJapan
 
İleri Seviye T-SQL Programlama - Chapter 12
İleri Seviye T-SQL Programlama - Chapter 12İleri Seviye T-SQL Programlama - Chapter 12
İleri Seviye T-SQL Programlama - Chapter 12Cihan Özhan
 
İleri Seviye T-SQL Programlama - Chapter 04
İleri Seviye T-SQL Programlama - Chapter 04İleri Seviye T-SQL Programlama - Chapter 04
İleri Seviye T-SQL Programlama - Chapter 04Cihan Özhan
 
Hadoop World 2011: Advanced HBase Schema Design - Lars George, Cloudera
Hadoop World 2011: Advanced HBase Schema Design - Lars George, ClouderaHadoop World 2011: Advanced HBase Schema Design - Lars George, Cloudera
Hadoop World 2011: Advanced HBase Schema Design - Lars George, ClouderaCloudera, Inc.
 
Exaustividade, precisão e consistência em indexação: sistematização conceitual
Exaustividade, precisão e consistência em indexação: sistematização conceitualExaustividade, precisão e consistência em indexação: sistematização conceitual
Exaustividade, precisão e consistência em indexação: sistematização conceitualLuciana Piovezan
 
Qlik Replicate のインストール
Qlik Replicate のインストールQlik Replicate のインストール
Qlik Replicate のインストールQlikPresalesJapan
 
Qlik ReplicateでのLog Streamの利用
Qlik ReplicateでのLog Streamの利用Qlik ReplicateでのLog Streamの利用
Qlik ReplicateでのLog Streamの利用QlikPresalesJapan
 
High Performance MongoDB on Storage-Optimized AWS EC2
High Performance MongoDB on Storage-Optimized AWS EC2High Performance MongoDB on Storage-Optimized AWS EC2
High Performance MongoDB on Storage-Optimized AWS EC2MongoDB
 
İleri Seviye T-SQL Programlama - Chapter 07
İleri Seviye T-SQL Programlama - Chapter 07İleri Seviye T-SQL Programlama - Chapter 07
İleri Seviye T-SQL Programlama - Chapter 07Cihan Özhan
 
SPA(SQL Performance Analyze)를 이용한 통계 정보 수집_Wh oracle
SPA(SQL Performance Analyze)를 이용한 통계 정보 수집_Wh oracleSPA(SQL Performance Analyze)를 이용한 통계 정보 수집_Wh oracle
SPA(SQL Performance Analyze)를 이용한 통계 정보 수집_Wh oracle엑셈
 
Qlik Replicateのタスク実行時の操作
Qlik Replicateのタスク実行時の操作Qlik Replicateのタスク実行時の操作
Qlik Replicateのタスク実行時の操作QlikPresalesJapan
 
MS SQL Server Full-Text Search
MS SQL Server Full-Text SearchMS SQL Server Full-Text Search
MS SQL Server Full-Text SearchBassam Diab
 
Snowflake on Googleのターゲットエンドポイントとしての利用
Snowflake on Googleのターゲットエンドポイントとしての利用Snowflake on Googleのターゲットエンドポイントとしての利用
Snowflake on Googleのターゲットエンドポイントとしての利用QlikPresalesJapan
 
Qlik Replicateでのレプリケーション・タスクの監視と制御
Qlik Replicateでのレプリケーション・タスクの監視と制御Qlik Replicateでのレプリケーション・タスクの監視と制御
Qlik Replicateでのレプリケーション・タスクの監視と制御QlikPresalesJapan
 
Amazon S3のターゲットエンドポイントとしての利用
Amazon S3のターゲットエンドポイントとしての利用Amazon S3のターゲットエンドポイントとしての利用
Amazon S3のターゲットエンドポイントとしての利用QlikPresalesJapan
 

What's hot (20)

Qlik Replicate - Control Tableの詳細
Qlik Replicate - Control Tableの詳細Qlik Replicate - Control Tableの詳細
Qlik Replicate - Control Tableの詳細
 
İleri Seviye T-SQL Programlama - Chapter 12
İleri Seviye T-SQL Programlama - Chapter 12İleri Seviye T-SQL Programlama - Chapter 12
İleri Seviye T-SQL Programlama - Chapter 12
 
İleri Seviye T-SQL Programlama - Chapter 04
İleri Seviye T-SQL Programlama - Chapter 04İleri Seviye T-SQL Programlama - Chapter 04
İleri Seviye T-SQL Programlama - Chapter 04
 
Hadoop World 2011: Advanced HBase Schema Design - Lars George, Cloudera
Hadoop World 2011: Advanced HBase Schema Design - Lars George, ClouderaHadoop World 2011: Advanced HBase Schema Design - Lars George, Cloudera
Hadoop World 2011: Advanced HBase Schema Design - Lars George, Cloudera
 
Exaustividade, precisão e consistência em indexação: sistematização conceitual
Exaustividade, precisão e consistência em indexação: sistematização conceitualExaustividade, precisão e consistência em indexação: sistematização conceitual
Exaustividade, precisão e consistência em indexação: sistematização conceitual
 
Good sql server interview_questions
Good sql server interview_questionsGood sql server interview_questions
Good sql server interview_questions
 
Qlik Replicate のインストール
Qlik Replicate のインストールQlik Replicate のインストール
Qlik Replicate のインストール
 
Elasticsearch Introduction
Elasticsearch IntroductionElasticsearch Introduction
Elasticsearch Introduction
 
Qlik ReplicateでのLog Streamの利用
Qlik ReplicateでのLog Streamの利用Qlik ReplicateでのLog Streamの利用
Qlik ReplicateでのLog Streamの利用
 
High Performance MongoDB on Storage-Optimized AWS EC2
High Performance MongoDB on Storage-Optimized AWS EC2High Performance MongoDB on Storage-Optimized AWS EC2
High Performance MongoDB on Storage-Optimized AWS EC2
 
İleri Seviye T-SQL Programlama - Chapter 07
İleri Seviye T-SQL Programlama - Chapter 07İleri Seviye T-SQL Programlama - Chapter 07
İleri Seviye T-SQL Programlama - Chapter 07
 
SPA(SQL Performance Analyze)를 이용한 통계 정보 수집_Wh oracle
SPA(SQL Performance Analyze)를 이용한 통계 정보 수집_Wh oracleSPA(SQL Performance Analyze)를 이용한 통계 정보 수집_Wh oracle
SPA(SQL Performance Analyze)를 이용한 통계 정보 수집_Wh oracle
 
Qlik Replicateのタスク実行時の操作
Qlik Replicateのタスク実行時の操作Qlik Replicateのタスク実行時の操作
Qlik Replicateのタスク実行時の操作
 
Optimizing MySQL queries
Optimizing MySQL queriesOptimizing MySQL queries
Optimizing MySQL queries
 
MS SQL Server Full-Text Search
MS SQL Server Full-Text SearchMS SQL Server Full-Text Search
MS SQL Server Full-Text Search
 
Snowflake on Googleのターゲットエンドポイントとしての利用
Snowflake on Googleのターゲットエンドポイントとしての利用Snowflake on Googleのターゲットエンドポイントとしての利用
Snowflake on Googleのターゲットエンドポイントとしての利用
 
Qlik Replicateでのレプリケーション・タスクの監視と制御
Qlik Replicateでのレプリケーション・タスクの監視と制御Qlik Replicateでのレプリケーション・タスクの監視と制御
Qlik Replicateでのレプリケーション・タスクの監視と制御
 
Amazon S3のターゲットエンドポイントとしての利用
Amazon S3のターゲットエンドポイントとしての利用Amazon S3のターゲットエンドポイントとしての利用
Amazon S3のターゲットエンドポイントとしての利用
 
Amazon Redshift Deep Dive
Amazon Redshift Deep Dive Amazon Redshift Deep Dive
Amazon Redshift Deep Dive
 
NoSql
NoSqlNoSql
NoSql
 

Similar to Index ve İstatistik:performansınızı arttırın.

Sql serverda indexkavrami
Sql serverda indexkavramiSql serverda indexkavrami
Sql serverda indexkavramioktaygokgol
 
Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008mtcakmak
 
SSO- SQL Serverda Index Kavramı
SSO- SQL Serverda Index KavramıSSO- SQL Serverda Index Kavramı
SSO- SQL Serverda Index KavramıSQLSERVERONCULERI
 
İleri Seviye T-SQL Programlama - Chapter 08
İleri Seviye T-SQL Programlama - Chapter 08İleri Seviye T-SQL Programlama - Chapter 08
İleri Seviye T-SQL Programlama - Chapter 08Cihan Özhan
 
AnkaraJUG Haziran 2013 - No SQL / Big Data
AnkaraJUG Haziran 2013 - No SQL / Big DataAnkaraJUG Haziran 2013 - No SQL / Big Data
AnkaraJUG Haziran 2013 - No SQL / Big DataAnkara JUG
 
Coğrafi bilgi sistemlerinde veritabanları
Coğrafi bilgi sistemlerinde veritabanlarıCoğrafi bilgi sistemlerinde veritabanları
Coğrafi bilgi sistemlerinde veritabanlarıA. Kutlu Ersoy, MSc.
 
SQL Server Performans İpuçları
SQL Server Performans İpuçlarıSQL Server Performans İpuçları
SQL Server Performans İpuçlarıturgaysahtiyan
 
Istanbul Datascience Academy Talks
Istanbul Datascience Academy TalksIstanbul Datascience Academy Talks
Istanbul Datascience Academy TalksMetin Uslu
 
Loglari nerede saklayalım?
Loglari nerede saklayalım?Loglari nerede saklayalım?
Loglari nerede saklayalım?Ertugrul Akbas
 
DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02
DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02
DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02Önder Değer
 
TROUG & Turkey JUG Semineri: Veriye erişimin en hızlı yolu
TROUG & Turkey JUG Semineri: Veriye erişimin en hızlı yoluTROUG & Turkey JUG Semineri: Veriye erişimin en hızlı yolu
TROUG & Turkey JUG Semineri: Veriye erişimin en hızlı yoluGokhan Atil
 
Introduction to SQL Tuning
Introduction to SQL TuningIntroduction to SQL Tuning
Introduction to SQL TuningEmrah METE
 
İleri Seviye T-SQL Programlama - Chapter 02
İleri Seviye T-SQL Programlama - Chapter 02İleri Seviye T-SQL Programlama - Chapter 02
İleri Seviye T-SQL Programlama - Chapter 02Cihan Özhan
 

Similar to Index ve İstatistik:performansınızı arttırın. (20)

Nosql ve mongoDB
Nosql ve mongoDBNosql ve mongoDB
Nosql ve mongoDB
 
Sql serverda indexkavrami
Sql serverda indexkavramiSql serverda indexkavrami
Sql serverda indexkavrami
 
Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008
 
SSO- SQL Serverda Index Kavramı
SSO- SQL Serverda Index KavramıSSO- SQL Serverda Index Kavramı
SSO- SQL Serverda Index Kavramı
 
İleri Seviye T-SQL Programlama - Chapter 08
İleri Seviye T-SQL Programlama - Chapter 08İleri Seviye T-SQL Programlama - Chapter 08
İleri Seviye T-SQL Programlama - Chapter 08
 
Delphi 7
Delphi 7Delphi 7
Delphi 7
 
AnkaraJUG Haziran 2013 - No SQL / Big Data
AnkaraJUG Haziran 2013 - No SQL / Big DataAnkaraJUG Haziran 2013 - No SQL / Big Data
AnkaraJUG Haziran 2013 - No SQL / Big Data
 
Coğrafi bilgi sistemlerinde veritabanları
Coğrafi bilgi sistemlerinde veritabanlarıCoğrafi bilgi sistemlerinde veritabanları
Coğrafi bilgi sistemlerinde veritabanları
 
SQL Server Performans İpuçları
SQL Server Performans İpuçlarıSQL Server Performans İpuçları
SQL Server Performans İpuçları
 
Bellek İçi Hesaplama Teknolojileri
Bellek İçi Hesaplama TeknolojileriBellek İçi Hesaplama Teknolojileri
Bellek İçi Hesaplama Teknolojileri
 
Istanbul Datascience Academy Talks
Istanbul Datascience Academy TalksIstanbul Datascience Academy Talks
Istanbul Datascience Academy Talks
 
No SQL & MongoDB Nedir?
No SQL & MongoDB Nedir?No SQL & MongoDB Nedir?
No SQL & MongoDB Nedir?
 
Loglari nerede saklayalım?
Loglari nerede saklayalım?Loglari nerede saklayalım?
Loglari nerede saklayalım?
 
Hayrettin kunuk
Hayrettin kunukHayrettin kunuk
Hayrettin kunuk
 
DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02
DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02
DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02
 
sunu (Asp.net 2
sunu (Asp.net 2sunu (Asp.net 2
sunu (Asp.net 2
 
TROUG & Turkey JUG Semineri: Veriye erişimin en hızlı yolu
TROUG & Turkey JUG Semineri: Veriye erişimin en hızlı yoluTROUG & Turkey JUG Semineri: Veriye erişimin en hızlı yolu
TROUG & Turkey JUG Semineri: Veriye erişimin en hızlı yolu
 
Introduction to SQL Tuning
Introduction to SQL TuningIntroduction to SQL Tuning
Introduction to SQL Tuning
 
MongoDB Overview
MongoDB OverviewMongoDB Overview
MongoDB Overview
 
İleri Seviye T-SQL Programlama - Chapter 02
İleri Seviye T-SQL Programlama - Chapter 02İleri Seviye T-SQL Programlama - Chapter 02
İleri Seviye T-SQL Programlama - Chapter 02
 

More from SQLSERVERONCULERI

Yüksek Süreklilik Çözümleri
Yüksek Süreklilik ÇözümleriYüksek Süreklilik Çözümleri
Yüksek Süreklilik ÇözümleriSQLSERVERONCULERI
 
SQL Azure – Buluttaki Veritabanınız
SQL Azure – Buluttaki VeritabanınızSQL Azure – Buluttaki Veritabanınız
SQL Azure – Buluttaki VeritabanınızSQLSERVERONCULERI
 
Reporting Services’de SQL Server 2008 R2 ile Gelen Yenilikler
Reporting Services’de SQL Server 2008 R2 ile Gelen YeniliklerReporting Services’de SQL Server 2008 R2 ile Gelen Yenilikler
Reporting Services’de SQL Server 2008 R2 ile Gelen YeniliklerSQLSERVERONCULERI
 
SQL Server 2005 Sonrası T-SQL Yenilikleri
SQL Server 2005 Sonrası T-SQL YenilikleriSQL Server 2005 Sonrası T-SQL Yenilikleri
SQL Server 2005 Sonrası T-SQL YenilikleriSQLSERVERONCULERI
 
Microsoft İş Zekası Yol Haritası
Microsoft İş Zekası Yol HaritasıMicrosoft İş Zekası Yol Haritası
Microsoft İş Zekası Yol HaritasıSQLSERVERONCULERI
 
Performans İyileştirme ve Sorgu Optimizasyonu
Performans İyileştirme ve Sorgu OptimizasyonuPerformans İyileştirme ve Sorgu Optimizasyonu
Performans İyileştirme ve Sorgu OptimizasyonuSQLSERVERONCULERI
 
Performans İyileştirme ve Sorgu Optimizasyonu
Performans İyileştirme ve Sorgu OptimizasyonuPerformans İyileştirme ve Sorgu Optimizasyonu
Performans İyileştirme ve Sorgu OptimizasyonuSQLSERVERONCULERI
 

More from SQLSERVERONCULERI (7)

Yüksek Süreklilik Çözümleri
Yüksek Süreklilik ÇözümleriYüksek Süreklilik Çözümleri
Yüksek Süreklilik Çözümleri
 
SQL Azure – Buluttaki Veritabanınız
SQL Azure – Buluttaki VeritabanınızSQL Azure – Buluttaki Veritabanınız
SQL Azure – Buluttaki Veritabanınız
 
Reporting Services’de SQL Server 2008 R2 ile Gelen Yenilikler
Reporting Services’de SQL Server 2008 R2 ile Gelen YeniliklerReporting Services’de SQL Server 2008 R2 ile Gelen Yenilikler
Reporting Services’de SQL Server 2008 R2 ile Gelen Yenilikler
 
SQL Server 2005 Sonrası T-SQL Yenilikleri
SQL Server 2005 Sonrası T-SQL YenilikleriSQL Server 2005 Sonrası T-SQL Yenilikleri
SQL Server 2005 Sonrası T-SQL Yenilikleri
 
Microsoft İş Zekası Yol Haritası
Microsoft İş Zekası Yol HaritasıMicrosoft İş Zekası Yol Haritası
Microsoft İş Zekası Yol Haritası
 
Performans İyileştirme ve Sorgu Optimizasyonu
Performans İyileştirme ve Sorgu OptimizasyonuPerformans İyileştirme ve Sorgu Optimizasyonu
Performans İyileştirme ve Sorgu Optimizasyonu
 
Performans İyileştirme ve Sorgu Optimizasyonu
Performans İyileştirme ve Sorgu OptimizasyonuPerformans İyileştirme ve Sorgu Optimizasyonu
Performans İyileştirme ve Sorgu Optimizasyonu
 

Index ve İstatistik:performansınızı arttırın.

  • 1. Turgay Sahtiyan Eurobank Tekfen – Veritabanı Yöneticisi Microsoft MVP – SQL Server
  • 2. SQL Server DBA – Eurobank Tekfen Konuşmacı/Yazar/Lider - SQL Server Öncüleri E-mail : turgay@turgaysahtiyan.com Blog : www.turgaysahtiyan.com 10+ Webcast MS Technet Türkiye - Whitepaper SQLPass Turkey Chapter Leader Microsoft MVP – SQL Server
  • 3. Index Neden Index ? Clustered Index – NonClustered Index Clustered Index’in Önemi NC Index’lerde Included Column Kullanımı DMV’ler ile Index Analizi İstatistik (Stats) İstatistik Nedir ? İstatistik Nasıl Oluşur ? İstatistik Nasıl Güncellenir ? Veritabanı İstatistik Özellikleri
  • 4. Daha az IO  Veriye daha hızlı erişim  Table Scan <> Index Search  Tamamlanması saatler süren bir sorgunun uygun index’ler kullanılarak saniyeler seviyesinde getirilmesi sağlanabilir.  Telefon rehberi  Gerekli index’ler faydalı olduğu gibi çok fazla index kullanımı OLTP işlemlerde performans sıkıntısı doğurur.
  • 5. 1 Level Root NonLeaf Level  1 veya 1’den fazla Intermediate Level  1 Level Leaf NonLeaf Level Page’ler sadece navigasyon için kullanılır. Veri dönüş işlemi NonLeaf Level Page’lerden değil Leaf Level Page’lerden yapılır.
  • 6. Bir Index’in Page’leri • DBCC IND ( {'dbname' | dbid}, tablenum, indexnum ) DBCC IND('AdventureWorks','tblIndexDeneme1',1) Bir Page’in İçeriği • DBCC PAGE ( {'dbname' | dbid}, filenum, pagenum [, printopt={0|1|2|3} ]) DBCC PAGE('AdventureWorks',1,24044,3) Leaf Level Data Page’lerin İçeriğini Görmek İçin • DBCC TRACEON (3604)
  • 7. Clustered Index = Fiziksel Index  Diskte veriler mantıksal olarak sıralı tutulurlar. (Page Chain)  Bir tabloda sadece 1 adet Clustered Index bulunabilir.  Leaf Level = Datanın Kendisi  Ada göre sıralı bir telefon defteri Clustered Index için iyi bir örnektir.
  • 8.  Telefon defteri için mesleki bir index yapmak iyi bir NonClustered Index örneğidir.  Leaf Level = Row Locator + Included Kolonlar  Row Locator Heap ya da Clustered Index durumuna göre farklılık gösterir.  Heap -> Dosya Numarası (File Identifier) + Sayfa Numarası (Page Number) + Kayıt Numarası (Slot Number)  Clustered Index -> Clustered Index Keys + (UNIQUIFIER)  Maksimum NonClustered Index Sayısı  SQL Server 2005 – 249  SQL Server 2008 – 999
  • 9.   10 Milyon kayıda ve 1 CL, 8 NC index’e Sahip Tablo Örneği Clustered Index Key Açıklaması CL Key Kayıt Sayısı NC Index MB Size Sayısı integer 4 byte 10.000.000 8 305,18 Datetime 8 byte 10.000.000 8 610,35 Datetime + Integer 12 byte 10.000.000 8 915,53 Guid 16 byte 10.000.000 8 1.220,70 Composite 32 byte 10.000.000 8 2.441,41 Composite 64 byte 10.000.000 8 4.882,81 Kaynak : Kimberly L. Tripp – www.sqlskills.com
  • 10. Peki ya 100.000.000 kayıt ve 12 NC var ise? Clustered Index Key Açıklaması CL Key Kayıt Sayısı NC Index MB Size Sayısı integer 4 byte 100.000.000 12 4.577,64 Datetime 8 byte 100.000.000 12 9.155,27 Datetime + Integer 12 byte 100.000.000 12 13.732,91 Guid 16 byte 100.000.000 12 18.310,55 Composite 32 byte 100.000.000 12 36.621,09 Composite 64 byte 100.000.000 12 73.242,19 Kaynak : Kimberly L. Tripp – www.sqlskills.com +70 GB’ın getirdiği yük • Disk • Memory • Backup • Insert / update performansı
  • 11. • Unique • Olmazsa: UNIQUFIER (4byte) • Static • Olmazsa: Update’ler NC’lerde de yapılır, CL’de Page Split’e ve Fragmantasyona sebep olur. • Küçük Boyutlu • Olmazsa: NC’lerde gereksiz alan kullanımı • Non-Nullable • Olmazsa: 3 byte’lık gereksiz alan kullanımı • Sürekli Artan • Olmazsa: Page Split ve Fragmantasyona sebep olur. Identity
  • 12.  SQL Server 2005 ile gelen bir özelliktir.  Amaç sorguyu cover edip lookup yapmamaktır.  Covering Index : Lookup yapma ihtiyacı olmadan istenen tüm bilgileri leaf level page’lerinde bulunduran NonClustered Index’lerdir.  Included kolonlar sadece Leaf Level Page’lerde bulunur. %1 Composite Index Included Column Index 25.21 MB 25.02 MB
  • 13. •Index Kullanım İstatistikleri •Kullanılmayan Index’ler •Fragmante Olan Index’ler •Eksik Index (Missing Index) Analizi
  • 14. Index = Horse Power Clustered - NonClustered Index Index’lerde B-Tree Yapısı Index Maintenance Index Kullanım İstatistiklerinin Analizi Eksik Index Analizi
  • 15. AdventureWorks.Person.Address  AddressID – Clustered Index  City – NonClustered Index  26 satır  NonClustered Index Seek + LookUp  141 Satır  Clustered Index Scan
  • 16. Tabloda bulunan verilerin dağılımını gösterir.  Sorgu planı (Query Plan) oluşturulurken kullanılır.  Estimated Rows’u bulmaya yarar.  Hangi Index’e hangi yöntem ile erişileceğini belirlemek için kullanılır.  Kayıtları okumadan ne kadar kaydın döneceğini tahminlemek ancak İstatistik kullanımı ile mümkündür.
  • 17. İstatistik delete-insert-update modifikasyon işlemleri ile güncelliğini yitirir.  Doğru tahminleme yapabilmek için istatistiğin olması kadar güncel olması da çok önemlidir. DEMO
  • 18. Index oluşturulduğu zaman. (Bu şekilde oluşan istatistiklerin ismi Index’in ismi ile aynıdır.)  Composite Index >> Sadece ilk kolon  Auto_Create_Statistics  İstatistik CREATE STATISTICS komutu ile manuel olarak oluşturulabilir.  8 MB’dan küçük ise Full Scan  8 MB’dan büyük ise Random Record
  • 19. İstatistiğin güncellenme tarihine bakmak için;  sp_autostats  DBCC SHOW_STATISTICS  STATS_DATE  İstatistiği manuel güncellemek için;  UPDATE STATISTICS  sp_updatestats (sysindexes.rowmodctr değerine göre karar verilir.)  Auto_Update_Statistics  Auto_Update_Statistics_Aysnc  Index Rebuild
  • 20. DBCC SHOW_STATISTICS ('Person.Address',IX_City)  Range_Rows : x kayıdı ile histogramdaki bir önceki değer arasında bulunan kayıt sayısını verir. select * from Person.Address where City>'Bonn' and City<'Bottrop‘  EQ_Rows : City kolonu x olan kayıt sayısını verir. select * from Person.Address where City='Bottrop‘  Distinct_Range_Rows : x ile bir önceki kayıt arasındaki tekil City sayısını verir. select City from Person.Address where City>'Bonn' and City<'Bottrop' group by City  Avg_Range_Rows : x ile bir önceki kayıt arasındaki kayıtların her birine düşen ortalama (tahmini) kayıt sayısını verir.  Maksimum 200 step olabilir.  200 Step’in yetmediği durumlarda Filtered Stats ile daha detaylı istatistikler oluşturulabilir. (SS 2008)
  • 21. Veritabanı İstatistik Özellikleri  Auto_Create_Statistics  Aktif ise where bloğunda kullanılan kolonlar için otomatik olarak istatistik oluşturulur.  Bu özellik ile otomatik olarak oluşturan istatistikler _WA_ ön eki ile başlar.  Auto_Update_Statistics  İstatistik, tablodaki kayıtların %20+500 adedi değiştikten sonra ilk kullanılmak istendiğinde güncellenir.  Kaç kaydın güncellendiği bilgisi sysindexes.rowmodctr kolonunda tutulur.  İstatistiğin çok sık güncellenmesi ReCompile’dan dolayı performans sıkıntısına sebep olabilir.  Auto_Update_Statistics_Aysnc  Auto_Update_Statistics ile beraber çalışır.  İstatistik güncellenme işleminin asenkron olarak gerçekleşmesini sağlar.  Sorgular istatistik güncellenme işlemini beklemedikleri için performans artışı sağlar.