MSSQL Server  SSMS Arayüzünden Index Oluşturma

Bu makalede mssql server index nasıl oluşturulur ne gibi ayarların yapılması gerektiğini ele almış olacağız. Mssql server 2014 ve sonrasında gelen tablo oluştururken aynı zamanda  index oluşturabildiğimizi belirtmiştik. Şimdi mssql server tablo üzerinde index oluşturma işlemlerine geçelim. Önceki makalelerde primary key değerinin clustered index olduğundan bahsetmiştik. Bir tabloda sadece bir tane clustered index yapısı olduğu için aşağıdaki resimde pasif görülmektedir.

Şimdi NonClustered Index.. bölümüne tıklayarak index yapımızı oluşturalım. Gelen ekranda  name kısmında belirtilen yapıda index ismi belirlenir. Eğer index tanımlayacağımız kolun tekilse Unique checkbox’ı işaretlenebilir.

Hangi kolunlara index atmak istiyorsak Index key columns bölümünden ilgili kolonlar seçilir. Birden fazla kolunun bir araya gelmesiyle oluşturulan index yapısı Composite Index olarak adlandırılmaktadır. Sayfanın arama bölümünden ilgili makaleye ulaşılabilir.

Kullanıcı sorgusunda bazı kolonları belirtmişse ve kolonlar index üzerinde yoksa  fazladan bir key lookup işlemi yapmaması için included columns eklenir. Bu tür index yapılarına Covering Index  denilmektedir. Sayfanın arama bölümünden ilgili makaleye ulaşılabilir.

Yukarıdaki açıklamalardan sonra Options bölümüne geçiyoruz.

General:
 Auto Recompute Statistics (Otomatik İstatistik Yeniden Hesaplama):
 True: İndeksle ilgili istatistikler otomatik olarak güncellenir. Bu durum, sorgu performansını optimize eder.
 False: İstatistiklerin manuel güncellenmesi gerekir.

Ignore Duplicate Values (Yinelenen Değerleri Yoksay):
 True: İndeks oluşturulurken yinelenen değerler göz ardı edilir.
 False: Yinelenen değerler indeksleme sürecini etkileyebilir.

 Locks:
 Allow Row Locks :
 True: Sorgular sırasında belirli bir satır üzerinde kilitleme yapılmasına izin verir. Daha ince taneli bir kilit türüdür.
 False: Satır bazında kilitleme yapılamaz.

Allow Page Locks:
 True: Bir veri sayfasının kilitlenmesine izin verir. Sayfa kilitleme genellikle daha geniş kapsamlıdır.
 False: Sayfa kilitleme devre dışı bırakılır.

 Operation
1. Maximum Degree of Parallelism:
 İndeks oluşturma işlemi sırasında kullanılacak maksimum işlemci çekirdeği sayısını belirtir.
 0: SQL Server, tüm kullanılabilir cpu’ları kullanır.

 Storage
1. Sort in tempdb:
 True: İndeks oluşturma sırasında geçici veriler ‘tempdb’ veritabanında saklanır.
 False: Geçici sıralama ana veritabanında yapılır.

2. Fill Factor:
Yeni indeks oluşturulurken, leaf level’de ne kadar boş alan bırakılacağını belirler. Her page bir boşluk bıraktığımızda, dizin daha fazla depolama alanı kullanacaktır. Ayrıca, dizin daha fazla sayfa içerdiğinden okuma performansı etkilenecektir. Fazla sayıda page oluşacaktır. Bu nedenle, veri almak çok daha fazla zaman alacaktır. Bu nedenle, INSERT\UPDATE ve SELECT işlemlerinin yoğunluğu gibi süreçleri doğru bir şekilde anlamak ve dolgu faktörü değeri için ideal orta yolu tanımlamak hayati önem taşır.
0: Sayfalar tamamen doldurulur. Genelde büyük sistemlerde 80-90 bandında bırakılmalıdır.

3. Pad Index:
 True: Fill factorda belirlemiş olduğumuz boşluk oranının aynı yapıda root ve imediate levelde oluşmasıda sağlanır.
 False: Sadece Leaf Level  seviyesinde uygulanır.

Bu ayarlar, SQL Server’daki sorgu performansını optimize etmek, kilitlenme sorunlarını önlemek ve disk alanı yönetimini iyileştirmek için kullanılır. Ayarlar, veritabanının büyüklüğüne ve sorguların doğasına göre dikkatlice yapılandırılmalıdır.

Options bölümünde gerekli kısımlara baktıktan sonra Storage kısmına geçilir. Bu kısımda index yapımızın hangi filegroup üzerinde oluşturulması gerektiğini manuel bir şekilde seçiyoruz. Ayrıca partition tablolarımızda indexlerimiz ilgili Partition scheme yapısına geçilmesi gerekmektedir.

Tablomuzda partition yapısı varsa ilgili partition scheme yapısının eklenmesi gerekmektedir.

Filter bölümünde oluşturulan index yapımızda herhangi bir filtreleme işlemi varsa bu bölümde görülmektedir. İlerleyen makaleler bu yapımızı görmüş olacağız.

Şart koşulundaki ifadeleri filter kısmına eklenince index oluşturulurken bu değerler set edilmektedir.

Tüm bu işlemleri yaptıktan sonra alacağımız scriptte yukarıdaki açıkladığımız ifadeleri görmüş olacağız.

Veritabanı altında herhangi bir sorguda index force edilebilir.

Select*from tableName with (INDEX=IndexName)

Bu makalede mssql server index oluşturma adımlarını ssms arayüzünden nasıl yapıldığını görmüş olduk. Başka bir makalede görüşmek dileğiyle..

Rabbinin sözü, doğruluk bakımından da, adalet bakımından da tastamamdır. O’nun sözlerini değiştirebilecek yoktur. O, işitendir, bilendir. En’am Suresi, 115. Ayet

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir