Makale Özeti

SQL Server’in daha önceki versiyonlarında büyük tablolarda performansı arttırmak için bölümlenmiş(Partition) viewler oluştururduk. SQL Server 2005’te var olan tabloyu da, performans arttırsın veya yönetim kolaylığı sağlasın diye bölümleyebiliriz.

Makale


Yatay Bölümlendirme (Partitioned) Yaparak Tablolarda Çalışma Yöntemleri:

 

SQL Server’in daha önceki versiyonlarında büyük tablolarda performansı arttırmak için bölümlenmiş(Partition)  viewler oluştururduk. SQL Server 2005’te var olan tabloyu da, performans  arttırsın veya yönetim kolaylığı sağlasın diye bölümleyebiliriz.

 

Örneğin parçalanmış tablonun bakımının yapılması daha az zaman alacaktır.

 

Tablolarda bölümlemeyi yatay şekilde yaparak, satırların karşılıklı çoklu file gruplara dağılmasını sağlarız. Bölümleme ile büyük tabloların daha kolay yönetilmesini  ve 8 veya daha fazla işlemciye sahip büyük sistemlerde tabloları sorgularken performansının arttırmasını sağlarız.

 

Bölümleme yaparken bülümlenen kolonu, tabloyu kaç parçaya böleceğimizi belirtiriz.

 

Bir diğer kolaylık da, INSERT INTO SELECT FROM       komutuna göre kıyaslandığında, bölümlenmiş tablolar arasında veri  yer değiştirmesinin daha hızlı olmasıdır.

 

Bölümleme (Partition) Oluşturma:

 

Bunun için sırayla bölümleme fonksiyonu, bölümleme şeması ve bölümlenmiş tablo oluşturmak gereklidir.

 

Bölümleme (Partition) fonksiyonu oluşturma için söz dizimi:

 

CREATE PARTITION FUNCTION partition_fonksiyon_ismi (giris_parametre_tipi)

AS RANGE [LEFT| RIGHT] FOR VALUES ([sınır_deger[,…n]])}

 

Giris_parametre_tipi: üzerinde bölümleme (Partition) yapılacak  kolonun veri tipi

LEFT|RIGHT: Bölümleme yapılacak kriterlerin sol yada sağ bölümde (Partition) kalacağını belirler.

Sınır_deger: Bölümleme yapılacak değer.

 

Bölümleme (Partition) şeması oluşturmak için söz dizimi:

 

CREATE PARTITION SCHEMA partition_sema_ismi

AS PARTITION partition_fonksiyon_ismi

[ALL] TO ((file_grup_ismi|[PRIMARY])[,…n])

 

Partition_sema_ismi: Şema ismi

Partition_fonksiyon_ismi: Partition şemasını, az önce oluşturulan bölümleme (Partition ) fonksiyona bağlar.

ALL: tüm bölümlerin, file_grup_isminde belirtilmiş tek file grubuna bağlanmasını sağlar.

File_grup_ismi: file_grup_ismi değerlerini listeleyerek belirleyebiliriz. Burada n partition sayısıdır.

 

Bölümleme (Partiton) Tablosu Oluşturma: CREATE TABLE komutunun sonuna ON bağdaştırıcı ile bölümleme (partition) şema ismini belirleyebiliriz. Şemaya parametre olarak üzerinde bölümleme yapacağımız kolonun adı verilir.

 

ÖRNEK:

1-

CREATE PARTITION FUNCTION pf_tarih (datetime)

AS RANGE RIGHT FOR VALUES (’01.01.2005’,’ 01.01.2006’)

 

Tabloda 3 bölüm oluşacak.

1)      01.01.2005’e kadar olan bölüm

2)      01.01.2005 ile 01.01.2006 arasındaki bölüm

3)      01.01.2006’dan sonrası

 

2-

CREATE PARTITION SCHEME ps_tarih

AS PARTITION pf_tarih  TO (fg1,fg2,fg3)

 

Daha önceden oluşturulmuş olan fg1, fg2, fg3 file gruplarına bölümlenmenin yapılmasını sağlayacak partition şeması oluşturduk.

3-

CREATE TABLE  Fatura(FaturaID int, tarih datetime)

ON ps_tarih(tarih)

 

Daha önce gösterilmiş şema ile bölümlenmiş tablo oluşturduk.

 

Bundan sonrası için bölümlenmiş tabloyu test edebilmek için aşağıdaki adımlar yapılabilir.

 

Adım1: INSERT tarih values (1,’03.03.2004’)

             INSERT tarih values (2,’01.01.2005’)

             INSERT tarih values (3,’05.05.2005’)

             INSERT tarih values (4,’01.01.2006’)

             INSERT tarih values (5,’06.06.2006’)

 

Adım2 :  SELECT FaturaID, $partition.pf_tarih(tarih) as bolum FROM Fatura

Sorgusunu çalıştırırsak 1. kayıtın 1. bölümden (partition), 2. ve 3. kayıtların 2 bölümden  (partition), 4. ve 5. kayıtların ise 3 bölümden (partition) geldiği görülecektir.

 

İyi çalışmalar dileklerimle.

 

Özgür ALTUNTAŞ