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..

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

Bu blogdaki popüler yayınlar

IONIC BAŞLANGIÇ

Cannot resolve the collation conflict between “Turkish_CI_AS” and “SQL_Latin1_General_CP1_CI_AS” in the equal to operation

Golang working with interfaces and functions -3