Dizinler

SQL Server'da Sorgu Performansını İyileştirme

Dean Smith

Founder, Atamai Analytics

Dizin nedir?

  • Tablodan veri erişimini hızlandıran yapı
  • Tüm tabloyu taramadan veriyi hızlı bulmayı sağlar
  • Filtreli sorguların performansını artırır
  • Tablo sütunlarına uygulanır
  • Genelde veritabanı yöneticisi ekler
SQL Server'da Sorgu Performansını İyileştirme

Kümelenmiş ve kümelenmemiş dizinler

Kümelenmiş Dizin

  • Benzetme: sözlük
  • Tablo sayfaları, dizinli sütun(lar)a göre sıralıdır
  • Tabloda yalnızca bir tane olur
  • Aramayı hızlandırır
SQL Server'da Sorgu Performansını İyileştirme

Kümelenmiş ve kümelenmemiş dizinler

Kümelenmiş Dizin

  • Benzetme: sözlük
  • Tablo sayfaları, dizinli sütun(lar)a göre sıralıdır
  • Tabloda yalnızca bir tane olur
  • Aramayı hızlandırır

Kümelenmemiş Dizin

  • Benzetme: arka indeksi olan ders kitabı
  • Yapı, sırasız tablo sayfalarına işaret eden sıralı dizin göstergeleri katmanıdır
  • Bir tabloda birden fazla olabilir
  • Ekleme ve güncellemeleri iyileştirir
SQL Server'da Sorgu Performansını İyileştirme

Kümelenmiş dizin: B‑ağaç yapısı

 

  • KÖK DÜĞÜM

 

  • DAL DÜĞÜMLERİ

 

  • SAYFA DÜĞÜMLERİ
SQL Server'da Sorgu Performansını İyileştirme

Kümelenmiş dizin: B‑ağaç yapısı

KÖK DÜĞÜM:                          
                                    A G O W
DAL DÜĞÜMLERİ:
                A B E F             G H J K             O P S T
SAYFA DÜĞÜMLERİ:
          Sayfa 1           Sayfa 2           Sayfa 3            Sayfa 4
       Dizin Sütunu |...  Dizin Sütunu |...  Dizin Sütunu | ... Dizin Sütunu | ...
       A | ...            E | ...            I | ...             M | ...
       B | ...            F | ...            J | ...             N | ...
       C | ...            G | ...            K | ...             O | ...
       D | ...            H | ...            L | ...             P | ...
       ...                ...                ...                 ...
SQL Server'da Sorgu Performansını İyileştirme

Kümelenmiş dizin olmayan Customers tablosu

SELECT *
FROM Customers
WHERE CustomerID = "PARIS"
SAYFA DÜĞÜMLERİ:
            Sayfa 1
         CustomerID |...
         ALFKI | ... 
         ANATR | ...
         BLONP | ... 
         BSBEV | ...
         ...                 
SQL Server'da Sorgu Performansını İyileştirme

Kümelenmiş dizin olmayan Customers tablosu

SELECT *
FROM Customers
WHERE CustomerID = "PARIS"
SAYFA DÜĞÜMLERİ:
            Sayfa 1            Sayfa 2
         CustomerID |...     CustomerID|...
         ALFKI | ...         FOLIG | ...
         ANATR | ...         FRANK | ...
         BLONP | ...         GALED | ...
         BSBEV | ...         GREAL | ...
         ...                 ...
SQL Server'da Sorgu Performansını İyileştirme

Kümelenmiş dizin olmayan Customers tablosu

SELECT *
FROM Customers
WHERE CustomerID = "PARIS"
SAYFA DÜĞÜMLERİ:
            Sayfa 1            Sayfa 2            Sayfa 3
         CustomerID |...     CustomerID|...      CustomerID | ... 
         ALFKI | ...         FOLIG | ...         LILAS | ...  
         ANATR | ...         FRANK | ...         LINOD | ...  
         BLONP | ...         GALED | ...         MEREP | ...  
         BSBEV | ...         GREAL | ...         MORGK | ...   
         ...                 ...                 ...          
SQL Server'da Sorgu Performansını İyileştirme

Kümelenmiş dizin olmayan Customers tablosu

SELECT *
FROM Customers
WHERE CustomerID = "PARIS"
SAYFA DÜĞÜMLERİ:
            Sayfa 1            Sayfa 2            Sayfa 3             Sayfa 4
         CustomerID |...     CustomerID|...      CustomerID | ...   CustomerID | ...
         ALFKI | ...         FOLIG | ...         LILAS | ...        OCEAN | ...
         ANATR | ...         FRANK | ...         LINOD | ...        PARIS | ...
         BLONP | ...         GALED | ...         MEREP | ...         
         BSBEV | ...         GREAL | ...         MORGK | ...        
         ...                 ...                 ...                ...
SQL Server'da Sorgu Performansını İyileştirme

Kümelenmiş dizinli Customers tablosu

SELECT *
FROM Customers
WHERE CustomerID = "PARIS"
KÖK DÜĞÜM:                          
                                         ALFKI FOLIG OLDWO WOLZA
DAL DÜĞÜMLERİ:
              ALFKI BONAP DRACD FISSA    FOLIG GALED LILAS NORTS    OCEAN OLDWO QUICK WOLZA
SAYFA DÜĞÜMLERİ:
                    Sayfa 1            Sayfa 2            Sayfa 3             Sayfa 4
                 CustomerID |...     CustomerID|...      CustomerID | ...     CustomerID | ...
                 ALFKI | ...         FOLIG | ...         LILAS | ...          OCEAN | ...
                 ANATR | ...         FRANK | ...         LINOD | ...          PARIS | ...
                 BLONP | ...         GALED | ...         MEREP | ...          PICCO | ...
                 BSBEV | ...         GREAL | ...         MORGK | ...          QUICK | ...
                 ...                 ...                 ...                  ...
SQL Server'da Sorgu Performansını İyileştirme

Kümelenmiş dizinli Customers tablosu

SELECT *
FROM Customers
WHERE CustomerID = "PARIS"
KÖK DÜĞÜM:                          
                                                     OLDWO WOLZA
DAL DÜĞÜMLERİ:
              ALFKI BONAP DRACD FISSA    FOLIG GALED LILAS NORTS    OCEAN OLDWO QUICK WOLZA
SAYFA DÜĞÜMLERİ:
                    Sayfa 1            Sayfa 2            Sayfa 3             Sayfa 4
                 CustomerID |...     CustomerID|...      CustomerID | ...     CustomerID | ...
                 ALFKI | ...         FOLIG | ...         LILAS | ...          OCEAN | ...
                 ANATR | ...         FRANK | ...         LINOD | ...          PARIS | ...
                 BLONP | ...         GALED | ...         MEREP | ...          PICCO | ...
                 BSBEV | ...         GREAL | ...         MORGK | ...          QUICK | ...
                 ...                 ...                 ...                  ...
SQL Server'da Sorgu Performansını İyileştirme

Kümelenmiş dizinli Customers tablosu

SELECT *
FROM Customers
WHERE CustomerID = "PARIS"
KÖK DÜĞÜM:                          
                                                     OLDWO WOLZA
DAL DÜĞÜMLERİ:
                                                                          OLDWO QUICK 
SAYFA DÜĞÜMLERİ:
                    Sayfa 1            Sayfa 2            Sayfa 3             Sayfa 4
                 CustomerID |...     CustomerID|...      CustomerID | ...     CustomerID | ...
                 ALFKI | ...         FOLIG | ...         LILAS | ...          OCEAN | ...
                 ANATR | ...         FRANK | ...         LINOD | ...          PARIS | ...
                 BLONP | ...         GALED | ...         MEREP | ...          PICCO | ...
                 BSBEV | ...         GREAL | ...         MORGK | ...          QUICK | ...
                 ...                 ...                 ...                  ...
SQL Server'da Sorgu Performansını İyileştirme

Kümelenmiş dizinli Customers tablosu

SELECT *
FROM Customers
WHERE CustomerID = "PARIS"
KÖK DÜĞÜM:                          
                                                     OLDWO WOLZA
DAL DÜĞÜMLERİ:
                                                                          OLDWO QUICK 
SAYFA DÜĞÜMLERİ:
                                                                                 Sayfa 4
                                                                              CustomerID | ...
                                                                              OCEAN | ...
                                                                              PARIS | ...
                                                                              PICCO | ...
                                                                              QUICK | ...
                                                                              ...
SQL Server'da Sorgu Performansını İyileştirme

Kümelenmiş dizinli Customers tablosu

SELECT *
FROM Customers
WHERE CustomerID = "PARIS"
KÖK DÜĞÜM:                          
                                                     OLDWO WOLZA
DAL DÜĞÜMLERİ:
                                                                          OLDWO QUICK 
SAYFA DÜĞÜMLERİ:
                                                                                 Sayfa 4
                                                                              CustomerID | ...



                                                                             PARIS | ...


SQL Server'da Sorgu Performansını İyileştirme

Kümelenmiş dizin: örnek

SET STATISTICS IO ON
SELECT * 
FROM PlayerStats 
WHERE Team = 'OKC'

PlayerStats tablosu, dizin yok

Table 'PlayerStats'. ..., logical reads 12, ...

 

Team üzerinde kümelenmiş dizin olan PlayerStats tablosu

Table 'PlayerStats'. ..., logical reads 2, ...
SQL Server'da Sorgu Performansını İyileştirme

Hadi pratik yapalım!

SQL Server'da Sorgu Performansını İyileştirme

Preparing Video For Download...