Sql Partitoning Table (Parçalanmış tablo)

Eyl 08, 2013
Parçalanmış tablo Microsoft tarafından SQL Server 2005 ile birlikte kullanıcılara sunulan bir özelliktir. Veritabanının özellikleri değiştirilmeden belirli koşullar ile parçalara ayırma işlemidir. Bu şekilde parçalama işlemi ile tabloda bütünsel olarak bir değişiklik olmamaktadır.

Parçalanmış Tablo Tercih Edilme Sebepleri:
  1. Disk kullanımının fazla olmaması
  2. Ölçeklenebilir olması
  3. Daha kolay ve hızlı erişimin sağlanmasıdır.

Böylelikle parçalanmış tablo ile veri üzerinde:

  • Okuma
  • Yedekleme
  • Yeni veri ekleme ya da silme gibi çeşitli yönetim işlemleri gerçekleştirilebilir.

Bu işlemler sonucunda yapılan değişiklikler parçalanmış tablo oluştururken belirlenen koşul çerçevesinde aktarılır. Ancak hızlı bir şekilde veriye ulaşmak diğer taraftan verinin güvenli bir şekilde saklanma olasılığını da azaltır.

Parçalanmış Tablo Oluşturma Aşamaları:

Parçalara ayırma işlemi için bir fonksiyon, şema ve tablo oluşturmak gerekir.

  1. PartitionTest veritabanı oluşturularak SatışTest tablosu aşağıda belirtilen şekilde tanımlanır:



    SatisTest tablo bilgileri:

  2. Tabloda yer alan veriler kullanılarak parçalanmış tablo için fonksiyon tanımlanır:

    CREATE PARTITION FUNCTION  FonksiyonAdi (<Parametre Tipi>) AS RANGE LEFT FOR VALUES (<Aralıkları belirten değerler>);

    o    FonksiyonAdi: SQL Server’da tabloyu parçalama işlevini gerçekleştiren fonksiyonun ismidir.
    o    Parametre Tipi: Kullanılan parametrenin nerde saklanacağını belirtir.
    o    Aralıkları belirten değerler: Tabloyu parçalamak için gerekli koşulları belirten kısımdır.
    Bir örneği aşağıda belirtilmektedir:

    CREATE PARTITION FUNCTION myFunc(int) AS RANGE LEFT FOR VALUES (1,40,100,200);
    Fonksiyonun işlevi :

     Parça
    1
     2 3
    4
    5
     Aralık s1<=1
     1<s2<=40 40<s3<=100
    100<s4<=200
     200<s

    şeklinde belirtilebilir.

  3.  Tanımlanan fonksiyon kullanılarak şema oluşturulur:

    CREATE PARTITION SCHEME FonksiyonSema AS PARTITION FonksiyonAdi  ALL TO ([PRIMARY]);

    o  FonksiyonSema: Parçalama işlevini gerçekleştiren şemaya verilen isimdir.
    o  Fonksiyon Adı: Fonsiyonun adını belirtmektedir.

    CREATE PARTITION  SCHEME myFuncSchema AS PARTITION myFunc ALL TO ([PRIMARY]);
  4. Son olarak parçalanmış tablo için tablo oluşturulur:

    CREATE TABLE FonksiyonTablo (ReturnID int identity, ProductID int, CustomerID int, ReturnDate datetime, ReturnReason ShortDescription NULL ) ON FonksiyonSema (ReturnID) ;

    Bir örneği ise:

    CREATE TABLE [dbo].[SatisTest] ([satisId] [int] NOT NULL, [satisAd] [varchar] (50) NOT NULL, [satisSayisi] [int] NOT NULL, ) on myFuncSchema(satisSayisi);

  5. Yapılan tabloyu görüntülemek için:

    SELECT * FROM sys.partitions WHERE OBJECT_ID = OBJECT_ID ('Tablo İsmi');

    Bir örneği ise:

    SELECT * FROM sys.partitions WHERE OBJECT_ID = OBJECT_ID ('SatisTesti');