MSSQL Server Table Partioning
Merhabalar,
Bugün tablolarımızda Select sorgumuzun sonucunu daha hızlı almak için kullanacağımız "Table Partioning" konusuna bakacağız..
İsterseniz kısaca table partioning in ne olduğundan bahsedelim. Büyük sayıda kayıt içeren tablolarımızdan Select sorgusunun cevabını daha kısa bir şekilde alabilmemiz amacıyla tablo kayıtlarımızın belirlediğimiz sınırlara sadık kalınarak (mesela tablomuzzda bir kolon belirdikten sonra ona eşik değeri verilerek) farklı fiziksel alanlara konulması ve sistem sorgulama yaptığında ilgili fiziksel alana giderek sonuç alması olarak tanımlayabiliriz...
Öncelikli olarak database fiziksel alan belirlemesi yapıyoruz..

Resimde de görüldüğü üzere iki farklı fiziksel alan belirledik.. Mesela senaryomuzda serverımızda birden fazla diskimizin olduğunu düşünelim.. Bir satış şirketiyiz dolayısıyla bu yıla ait satışlarımızı yoğun olmayan diskimize koymayı düşünebiliriz.
Şimdi ise tablomuzu partionlara ayıracak partition tanımlamalarımızı yapalım..
İlk kodumuz kolonumuzun eşik değerinin belirtildiği yer. Burada range diyerek aralık veriyoruz..
Fark ettiyseniz burada tek değer verdik bunun anlamı scheme kodumuzu da baktığımızda
PRIMARY : 0< deger ve deger<=1
SECODARY: deger>1
şeklinde oldu.
Şimdi şemamızı tabloya bağlıyoruz..
Burada da görüldüğü üzere id kolonumuzu Partition Schemamıza bağlamış olduk. Böylece id kolonuna bakılarak kayıtlarımız PRIMARY kısmına veya SECONDARY kısmına konulacak..
Id kolonlu sorgularımızın performansı da bu şekilde artırılmış oldu.
Herkese Kolay Gelsin..
Bugün tablolarımızda Select sorgumuzun sonucunu daha hızlı almak için kullanacağımız "Table Partioning" konusuna bakacağız..
İsterseniz kısaca table partioning in ne olduğundan bahsedelim. Büyük sayıda kayıt içeren tablolarımızdan Select sorgusunun cevabını daha kısa bir şekilde alabilmemiz amacıyla tablo kayıtlarımızın belirlediğimiz sınırlara sadık kalınarak (mesela tablomuzzda bir kolon belirdikten sonra ona eşik değeri verilerek) farklı fiziksel alanlara konulması ve sistem sorgulama yaptığında ilgili fiziksel alana giderek sonuç alması olarak tanımlayabiliriz...
Öncelikli olarak database fiziksel alan belirlemesi yapıyoruz..
Resimde de görüldüğü üzere iki farklı fiziksel alan belirledik.. Mesela senaryomuzda serverımızda birden fazla diskimizin olduğunu düşünelim.. Bir satış şirketiyiz dolayısıyla bu yıla ait satışlarımızı yoğun olmayan diskimize koymayı düşünebiliriz.
Şimdi ise tablomuzu partionlara ayıracak partition tanımlamalarımızı yapalım..
CREATE PARTITION FUNCTION MyPartitionRange (INT)
AS RANGE LEFT FOR VALUES (1)
CREATE PARTITION SCHEME MY_PartitionScheme
AS PARTITION MyPartitionRange
TO ([PRIMARY], [SECONDARY])
İlk kodumuz kolonumuzun eşik değerinin belirtildiği yer. Burada range diyerek aralık veriyoruz..
Fark ettiyseniz burada tek değer verdik bunun anlamı scheme kodumuzu da baktığımızda
PRIMARY : 0< deger ve deger<=1
SECODARY: deger>1
şeklinde oldu.
Şimdi şemamızı tabloya bağlıyoruz..
USE [TEST]
GO
/****** Object: Table [dbo].[Test] Script Date: 04/20/2011 11:35:11 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Test](
[id] [int] NULL,
[ad] [varchar](100) NULL
)
on MY_PartitionScheme (id)
GO
SET ANSI_PADDING OFF
GO
Burada da görüldüğü üzere id kolonumuzu Partition Schemamıza bağlamış olduk. Böylece id kolonuna bakılarak kayıtlarımız PRIMARY kısmına veya SECONDARY kısmına konulacak..
Id kolonlu sorgularımızın performansı da bu şekilde artırılmış oldu.
Herkese Kolay Gelsin..
Yorumlar
Yorum Gönder