Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

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.

Benzer bir sunumlar


... konulu sunumlar: "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."— Sunum transkripti:

1

2 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  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’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  1 Level Root  1 veya 1’den fazla Intermediate Level  1 Level Leaf NonLeaf Level

6 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  ChildFileId  ChildPageId  Id – Clustered Index Key  UNIQUIFIER (*) – Key’i Unique’leştirmek İçin Kullanılır. (4 byte Integer)  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 Clustered Index NonLeaf Level Page *Bir key’in unique olup olmaması index tanımlanırken kullanılan UNIQUE ifadesine bağlıdır.

8  ChildFileId  ChildPageId  Ad – NonClustered Index Key  Id – Clustered Index Key  UNIQUIFIER – Key’i Unique’leştirmek İçin Kullanılır. (4 byte Integer)  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 NonClustered Index NonLeaf Level Page

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

10  Canlı data üzerinde index B-Tree arama demosu

11  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  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 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 Unique Clustered Index - NonLeafLeaf

15 NonUnique Clustered Index - NonLeafLeaf

16 Heap Tablo + Unique NonClustered Index

17 Unique Clustered Index + Unique NonClustered Index

18 NonUnique Clustered Index + Unique NonClustered Index

19 NonUnique Clustered Index + NonUnique NonClustered Index

20  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. Composite Index MB % 1 Included Column Index MB

21  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

23


"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." indir ppt

Benzer bir sunumlar


Google Reklamları