İyi bir clustered index’in key kolonları mümkünse…


Bir clustered index‘in key kolonunu (ya da kolonlarını) seçerken dikkat edilmesi gereken üç temel özellik sayabiliriz: Unique, dar, statik.

Clustered index kolonu unique değilse, arka planda sql server 4 byte integer görünmeyen bir değer ekleyerek unique olmasını sağlar. Satırların sırasını garantiye alabilmek için bunu yapması gerekir. Bu da gereksiz yere clustered index’in key’inin şişmesine sebep olan bir unsurdur.

Key’in dar olmasını da isteriz. Çünkü bir veritabanında belki en fazla tekrar edilen unsur clustered index keyleridir. İlgili tablodaki tüm nonclustered indexlerin yaprak seviyelerinde clustered index key’i tekrar edilir. Daha geniş bir key seçersek, hem veri tekrarını artırarak kaplanan alanı artırmış oluruz, hem de nonclustered indexleri şişirerek yararlılık olasılıklarını düşürmüş oluruz.

Ayrıca bir veritabanında storage’ı artıran herşeyde belleği de dikkate almamız gerekir. Bir tablonun diskte daha fazla yer kaplaması çok önemli olmayabilir ama daha fazla sayfaya yayılmış olması buffer cache’de daha fazla yer kaplayacağı anlamına gelir ve bu durum SQL Server‘ın belleği etkin kullanmasında olumsuz bir etki yaratır.

Son olarak key’in görece statik olmasını isteriz, çünkü key’in değişmesi durumunda tüm satırın index’teki yerinin değişmesi gerekir ki bu durum page split dediğimiz bir indexin bozulmasındaki en etkili duruma sebep olabilir.

Aslında bu belirttiğimiz 3 unsurun yanısıra güzelce ve sürekli büyüyen bir key de hoşumuza gider. Mesela otomatik artan bir identity kolonu ise key, değmeyin keyfimize! Insert’ler hep sona geleceği için page split dediğimiz durumun oluşma ihtimalini epeyce azaltmış oluruz.

Bu yazı SQL Server içinde yayınlandı ve , , olarak etiketlendi. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s