SQL Server Table Partition Oluşturmak

Duran BÜYÜKÖZTÜRK

Updated on:

Bir tabloda yer alan verileri kendi belirlediğiniz kümeler halinde istediğiniz diskte tutabileceğinizi biliyor muydunuz? Bu yazımızda birçok farklı amaç için kullanabileceğiniz bu güzel özelliği, table partition yapısını anlatacağız.

Hemen aklıma gelen birkaç örnek ile ne için kullanılabileceğinden bahsedelim. Zamanla büyüyen bir tablomuz olduğunu düşünelim. Tabloyu yönetmemiz günden güne zorlaşacak, index bakım süreleri her geçen gün artacaktır. Hatta eski verilerin çok az sorgulandığı ancak yeni verilerin çok sık sorgulandığı bir durumda olabilir. Böyle bir durumda partition işleminin bize ne gibi bir faydası olabilir?

  • Yeni eklen verileri hızlı disklere konumlandırabiliriz.
  • İndex bakımlarını sadece belirlediğimiz aralıktaki verileri kapsayacak şekilde ayarlayabiliriz.
  • Partition Switch işlemi ile TB’larca veriyi saniyeler içerisinde taşıyabilirsiniz.

Şimdi gelelim nasıl yapıldığına.

Öncelikle partitionlarımızı ekleyeceğimiz file groupları ekleyerek başlamamız gerekiyor.

Yukarıda yer alan resimde görüldüğü gibi 3 adet file group ekledim.

Ardından bu file grouplara file eklememiz gerekiyor.


File eklerken kırmızı ile işaretlediğim kısma dikkat etmeniz gerekir. Oluşturduğumuz fileları daha önce oluşturduğumuz file grouplara tanımlamalıyız.

Belirlediğimiz diskler üzerine belirlediğimiz fileları oluşturduk şimdi sıra geldi tablomuzu oluşturmaya ve içerisindeki verileri belirlediğimiz bir aralığa göre belirlediğimiz filelara yazmaya.

Bu işlemi yapmak için iki şeye ihtiyacımız var. Birisi Partition Function diğeri ise bu Partition Schema

Partition Function kısmında tabloda yer alacak verimizi hangi kritere göre bölmek istediğimizi belirtiyoruz. Partition Schemada ise bu belirlediğimiz aralığı hangi dosyalara yazacağımızı belirliyoruz. Ben tablomu otomatik artan bir bigint alanına göre bölmek istiyorum. Ve bunun için aşağıdaki script ile partition function oluşturuyorum.

— PF_OrderByBigIntId(Bigint) fonksiyonum adını ve alacağı değerin Bigint formatında olduğunu belirtiyorum.

— RIGHT – LEFT ifadesi ile alakalı bilgiyi daha geniş bir zamanımda uzunca anlatmam gerekecek.

— Values kısmında ise 100000 diyerek 0 ile 100000 arasında kalan değerleri, ardından 100000 ile 200000 arasında kalan değerleri aralık olarak belirliyorum.

Sıra geldi partition scheme oluşturmaya.

 

— PS_OrderByBigIntId şemamızın ismini belirtiyor.

— AS PARTITION PF_OrderByBigIntId ifadesi ile parçalama fonksiyonumu tanımlıyorum.

— Dikkatinizden kaçmamıştır, oluşturduğumuz fonksiyonda 2 aralık belirtmemize rağmen burada 3 file group belirtiyoruz, bunun sebebi aralığın dışında kalacak değerler için de en az bir file istemesidir. Yani 200000 den yüksek bir değerli kayıt gelirse FG_partition3 dosyasına yazacaktır.

 

Sıra geldi tablomuzu oluşturmaya.

 

 

— Gördüğünüz gibi  tabloyu oluşturuken ON [PRIMARY] ibaresi yerine şemamızın adını yazdık ve Id kısmını da parametre olarak içerisine ekledik.

— Tabloya veri eklemek için aşağıdaki gibi basit bir script yazıp testini yapabiliriz.

— Aşağıdaki script yardımı ile hangi partitionda kaç adet veri olduğunu da görebiliriz.

Yorum yapın