MSSQL Server Indexs’i Farklı File Group Altında Oluşturma

SQL Server’da indeks oluştururken, indeksi primary filegroup dışında farklı bir filegroup’ta oluşturabilirsiniz. Varsayılan olarak, indeks, tablonun bulunduğu filegroup’ta oluşturulur. Bu genellikle primary filegroup olur.

Farklı Filegroup’ta İndeks Oluşturmanın Avantajları:

  • İndeks ve tablo verilerini farklı fiziksel disklere yayarak, okuma ve yazma işlemleri paralel olarak gerçekleştirilebilir. Örneğin, yoğun okuma ve yazma işlemleri olan tablolarda, indekslerin ayrı bir filegroup altında yer alması performansı artırabilir. Ancak bunun çalışması için bu filegroup’ların farklı fiziksel disk harflerine (LUN) bağlı olması gerekir. Aynı disk üzerinde farklı klasörlerdeki filegroup’lar performansı artırmaz, aksine disk kafasını yorabilir.
  •  Yedekleme ve geri yükleme işlemleri daha esnek hale gelir. Belirli bir filegroup’u yedekleyebilir veya geri yükleyebilirsiniz. Bu, büyük tablolar için yedekleme ve geri yükleme sürelerini kısaltabilir.
  • Disk alanı dolduğunda, sadece ilgili filegroup’a yeni disk ekleyerek sorunu çözebilirsiniz. Bu, tüm veritabanını taşımaktan daha kolay ve hızlıdır.
  • İndeks yeniden oluşturma veya yeniden düzenleme gibi bakım işlemleri, sadece ilgili filegroup’u etkiler. Bu, diğer filegroup’larda bulunan tablolar üzerindeki etkileri en aza indirir.

Gerçek performans filegroup’un kendine özgü bir data file(ndf) olmasıdır.

Farklı Filegroup’ta İndeks Oluşturmanın Dezavantajları:

  • Filegroup yönetimi, veritabanı yönetimini biraz daha karmaşık hale getirebilir.
  • Filegroup’lar doğru şekilde yapılandırılmazsa, performans düşüşlerine neden olabilir. Örneğin, indeks ve tablo verileri aynı fiziksel diskte bulunuyorsa, performans avantajı elde edemezsiniz.
  • Filegroup’ları kullanmadan önce, veri erişim modellerinizi ve büyüme tahminlerinizi dikkatlice planlamanız gerekir. Eğer sorgularınız sürekli “Index Seek” yapıp ardından tabloya gidiyorsa (Key Lookup), iki farklı diskte sürekli git-gel yaşanacaktır.

İndeks Oluşturma Sırasında Filegroup Belirtme:

İndeks oluştururken, ON ifadesi ile indeksin hangi filegroup üzerinde yer alacağını belirtebilirsiniz. Eğer filegroup belirtmezseniz, indeks varsayılan filegroup üzerinde oluşturulur.

Non Clustered index yapısında index’in belirli file group’da oluşturulması:

CREATE NONCLUSTERED INDEX idx_CustomerName
ON Customers (CustomerName)
ON FG2;  -- İndeksin FG2 filegroup'unda oluşturulmasını sağlar.

Clustered index yapısında index’in belirli file group’da oluşturulması:

CREATE CLUSTERED INDEX IX_SalesOrderDetail_SalesOrderID
ON SalesOrderDetail (SalesOrderID)
ON FG1; -- FG1 filegroup'unu belirttik.

Eğer indeks için ON ifadesini belirtmezseniz, indeks default filegroup altında oluşturulur.

Teknik olarak; eğer ON ifadesi kullanmazsan SQL Server indeksi “Default” olarak işaretlenmiş filegroup’ta oluşturur. Eğer Default filegroup değiştirilmediyse bu Primary’dir. Filegroup’un önceden oluşturulmuş olması gerekir. Tempdb veritabanında filegroup kullanamazsınız.

Sonuç olarak, farklı filegroup’larda indeks oluşturmak, performans, yönetilebilirlik ve alan yönetimi açısından avantajlar sağlayabilir. Ancak, bu avantajları elde etmek için dikkatli planlama ve doğru yapılandırma gereklidir. Eğer filegroup yönetiminin getirdiği karmaşıklıktan kaçınmak istiyorsanız, indeksleri varsayılan filegroup’ta bırakabilirsiniz.

Not: Bir tabloda Clustered Index oluşturduğunda (veya olanı farklı yere taşıdığında), tablonun tüm verisini (satırlarını) o filegroup’a taşımış olursun. Çünkü Clustered Index, tablonun fiziksel dizilimidir.

“Non-Clustered Index oluştururken filegroup seçmek, bir kitabı kütüphanede tutup dizinini yanına almaktır. Clustered Index oluştururken filegroup seçmek, kütüphaneyi komple başka bir binaya taşımaktır.”

Bu makalede mssql serverda index farklı bir filegroup altında nasıl oluşturulur görmüş olduk. Başka bir makalede görüşmek dileğiyle..

Dünya hayatı yalnızca bir oyun ve bir oyalanmadan başkası değildir. Korkup-sakınmakta olanlar için ahiret yurdu gerçekten daha hayırlıdır. Yine de akıl erdirmeyecek misiniz? En’am Suresi, 32. Ayet

Author: Yunus YÜCEL

Bir yanıt yazın

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