Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

SQL Server’da Index Kavramı

Benzer bir sunumlar


... konulu sunumlar: "SQL Server’da Index Kavramı"— Sunum transkripti:

1 SQL Server’da Index Kavramı
Performance Tuning ve Query Optimization

2 Ajanda Neden Index ? Index Nasıl Çalışır ? (B-Tree Yapısı)
Clustered Index NonClustered Index Örneklerle Index Page’ler Included Column Kullanımı Sonuç - Özet

3 Neden Index ? SQL Server açısından index kullanımının en önemli amacı, istenen bilginin daha az veri okunarak daha kısa zamanda getirilmesini sağlamaktır. Index kullanarak bir tablonun tamamını okumaktansa index key vasıtasıyla okumak istediğimiz kayıda daha hızlı bir şekilde ulaşmamız mümkündür. Tamamlanması saatler süren bir sorgunun uygun index’ler kullanılarak saniyeler seviyesinde getirilmesi sağlanabilir. Telefon rehberi index kullanımı için iyi bir örnektir. (Karışık Rehber – Sıralı Rehber) Canlı örnek - table scan-index kullanımı arasındaki fark Gerekli index’ler faydalı olduğu gibi çok fazla index kullanımı OLTP işlemlerde performans sıkıntısı doğurur.

4 Index Nasıl Çalışır ? (B-Tree Yapısı)
Index’in çalışma prensibini anlamak, Index tipine ve Index’in hangi kolonlar üzerine tanımlanması gerektiğine karar verme aşamaları için oldukça önem taşımaktadır. Client İsteği -> Protocol Layer -> Parse -> Query Processor Query Processor = Optimize + Execute Optimize = En Uygun Index’ten Query Plan Oluşturulur. Execute = Bu aşamada Index üzerinde B-Tree yapısı kullanılarak arama yapılır.

5 Index’lerde B-Tree Yapısı
1 Level Root 1 veya 1’den fazla Intermediate Level 1 Level Leaf NonLeaf Level

6 Index Page’leri Görüntüleme
DBCC IND ( {'dbname' | dbid}, tablenum, indexnum ) DBCC IND('AdventureWorks','tblIndexDeneme1',1) Bir Index’in Page’leri DBCC PAGE ( {'dbname' | dbid}, filenum, pagenum [, printopt={0|1|2|3} ]) DBCC PAGE('AdventureWorks',1,24044,3) Bir Page’in İçeriği DBCC TRACEON (3604) Leaf Level Data Page’lerin İçeriğini Görmek İçin

7 Page Örnekleri Clustered Index NonLeaf Level Page ChildFileId
ChildPageId Id – Clustered Index Key UNIQUIFIER (*) – Key’i Unique’leştirmek İçin Kullanılır. (4 byte Integer) Alt Level Page’lere Erişmek İçin Kullanılır *Bir key’in unique olup olmaması index tanımlanırken kullanılan UNIQUE ifadesine bağlıdır.

8 Page Örnekleri NonClustered Index NonLeaf Level Page ChildFileId
ChildPageId Ad – NonClustered Index Key Id – Clustered Index Key UNIQUIFIER – Key’i Unique’leştirmek İçin Kullanılır. (4 byte Integer) Alt Level Page’lere Erişmek İçin Kullanılır

9 Page Örnekleri NonClustered Index Leaf Level Page
Ad – NonClustered Index Key SoyAd – Included Column Id – Clustered Index Key UNIQUIFIER Lookup yapmak için kullanılır.

10 B-Tree Örneği Canlı data üzerinde index B-Tree arama demosu

11 Clustered Index 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. Otomatik artan (Identity) bir alana Clustered Index tanımlanması best practice’dir. Bunun nedenler; Identity unique’dir. 4 byte’lık UNIQUIFIER kullanımından kurtulunur. Identity kolonu update görmez. Update gören bir alana Clustered Index tanımlanmasının sakıncaları şunlardır: Page Split Index Fragmentation NonClustered Index’lerin Update Görmesi Index Seek yerine Index Scan yapılır.

12 NonClustered Index 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

13 Örneklerle Index Page’ler
Unique Clustered Index NonUnique Clustered Index Clustered Index’te Page’lerin Yapısı Heap Tablo + Unique NonClustered Index Unique Clustered Index + Unique NonClustered Index NonUnique Clustered Index + Unique NonClustered Index NonUnique Clustered Index + NonUnique NonClustered Index NonClustered Index’te Page’lerin Yapısı

14 Örneklerle Index Page’ler
Unique Clustered Index - NonLeaf Leaf

15 Örneklerle Index Page’ler
NonUnique Clustered Index - NonLeaf Leaf

16 Örneklerle Index Page’ler
Heap Tablo + Unique NonClustered Index

17 Örneklerle Index Page’ler
Unique Clustered Index + Unique NonClustered Index

18 Örneklerle Index Page’ler
NonUnique Clustered Index + Unique NonClustered Index

19 Örneklerle Index Page’ler
NonUnique Clustered Index + NonUnique NonClustered Index

20 Included Kolon Kullanımı
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. NonLeaf Level Page’lerde covering column’u bulundurmayıp boyutu arttırmadan sadece leaf level page’lerde bulundurmayı amaçlar. Telefon Rehberi için verilen mesleki NonClustered Index örneği Included kolon ile yapılırsa lookup’tan kurtulunur. % 1 Composite Index 25.21 MB Included Column Index 25.02 MB

21 Sonuç - Özet Index’i SQL Server’ın beygir gücü olarak tanımlayabiliriz. Etkin index kullanımı verinin sorgulanması ihtiyacını daha etkin bir şekilde karşılamak için göz önünde bulundurulması gereken en önemli konudur Clustered ve NonClustered Index’lerin davranışları farklı olduğu için bu 2 index tipi arasındaki farkı bilmek Index oluşturma açısından önemlidir. Index’lerin B-Tree yapısının ne şekilde çalıştığı bir diğer önemli konudur. Index’lerin tanımlanmış olması, sürekli performanslı bir çalışma getireceği manasına gelmez. Periyodik olarak Index’lerin bakımının yapılması Index performansına etki eden önemli faktörlerden biridir. Index kullanımı çok önemliyken, gereksiz,kullanılmayan Index’leri sistemde bulundurmak bir o kadar dezavantajdır. Periyodik olarak kullanılmayan ya da yazma istatistiği okuma istatistiğinden fazla olan index’lerin belirlenip drop edilmesi gerekir Aynı şekilde olması gerekipte olmayan index’lerin (Missing Index) belirlenip oluşturulması sistemi daha performanslı çalışır hale getirecektir.

22 Soru - Cevap

23 Daha Fazlası İçin : www.sqlserveronculeri.com www.turgaysahtiyan.com


"SQL Server’da Index Kavramı" indir ppt

Benzer bir sunumlar


Google Reklamları