MSSQL Server’da SSMS Üzerinden Partition Oluşturma

Bu makalede önceki makalelerde yapmış olduğum partition oluşturma işlemini SSMS ara yüzünden yapmaya çalışacağım.

Tekrar olması açısından partition işleminin tablo bazlı yapıldığını tablomuzda büyük verinin bölümlere ayrılarak performans anlamında ciddi kazancımızın olduğu işleme girecek data miktarını minimize eden bir yapı olarak karşımıza çıkmaktadır. Daha detaylı bilgi alınmak isteniyorsa ilgili makale okunmalıdır.

Hemen uygulamalı bir şekilde partition işleminin nasıl yapıldığını ele alalım. Hangi veritabanı altındaki tablo üzerinde partition yapılacaksa ilgili tablo üzerine sağ tıklanır ve storage kısmından create partition seçeneği seçilir.

CREATE PARTITION dedikten sonra hangi kolunu tekil olduğunu ve kullanıcının performans anlamında hangi kolunda daha avantajlı olduğuna bildiğimiz kolunu seçiyoruz. Bizim örnekte tarih kolunu.

Next dediğimde oluşturacağım Partition fonksiyonuna bir isim vermemi istiyor.

Çerçeve içine aldığım yerde dikkat edersek mevcut olan function’da seçebilirim. Next dedikten sonra bir scheme adı belirliyorum.

Next demeden önce tablomuzda herhangi bir partition var mı diye kontrol edelim.

Tablomuza select çektiğimizde ise önceden insert ettiğim 54 kayıdın olduğunu görmekteyim.

Şimdi gelelim yukarıda partition scheme oluşturduğumuz yere burada next diyoruz ve yeni bir ekran önümüzde açılıyor.

Bu ekranda file group’lar üzerinde datayı dağıtabilmemiz için bize kriterleri sunuyor mesala datayı kaç file group’a bölmek istediğimizi ve range bölümünde sağa veya sola  eşit olup olmayacağını soruyor. Veritabanı üzerindeki file group yapısına baktıktan sonra bölümleme işlemlerimi belirliyorum.

Şimdi ise partition konfigürasyonumuzu yapalım:

Set boundaries kısmında tarih değerimizi set ediyoruz. Estimate storage kısmına tıklayarakta bölümlemeleri ve boyutlarını görebiliriz.

İlgili file group’ları ve aralıkları belirledikten sonra next diyoruz.

Finish dedikten sonra başarılı bir şekilde create scriptini almış olduk.

USE [PARTITIONTEST]
GO
BEGIN TRANSACTION
CREATE PARTITION FUNCTION [pf_Tarih23](datetime) AS RANGE LEFT FOR VALUES (N'2020-01-01T00:00:00', N'2021-01-01T00:00:00', N'2022-01-01T00:00:00', N'2023-01-01T00:00:00', N'2024-01-01T00:00:00')


CREATE PARTITION SCHEME [ps_Tarih23] AS PARTITION [pf_Tarih23] TO ([FG2019], [FG2020], [FG2021], [FG2022], [FG2023], [FG2024])


ALTER TABLE [dbo].[SSMSPARTTN] DROP CONSTRAINT [ABC] WITH ( ONLINE = OFF )


ALTER TABLE [dbo].[SSMSPARTTN] ADD  CONSTRAINT [ABC] PRIMARY KEY NONCLUSTERED 
(
	[sırano] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)on [PRIMARY]


CREATE CLUSTERED INDEX [ClusteredIndex_on_ps_Tarih23_638486322919260085] ON [dbo].[SSMSPARTTN]
(
	[tarih]
)WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON  [ps_Tarih23]([tarih])


DROP INDEX [ClusteredIndex_on_ps_Tarih23_638486322919260085] ON  [dbo].[SSMSPARTTN]

Yukarıda SSMS arayüzün’den yapmış olduğum partition yapısında tüm tarih aralığındaki değerlerim doğru gelmiş oldu ama yukarıdaki yapıda partition yapının bozulmaması için sonuncu yazılan file group’dan sonra bir file group’un daha olması gerekmektedir. Yukarıda arayüz ekranında bir filegroup ve data file’ın eklenmesi gerekiyordu.

ALTER PARTITION SCHEME [ps_Tarih23]
NEXT USED [FG2025]
GO
ALTER PARTITION FUNCTION [pF_Tarih23]()
SPLIT RANGE (N'2025-01-01T00:00:00.000')

Yukarıda resimde dikkat edilirse en başından beri sürekli makalelerde belirttiğim partition yapısının bozulduğunu görmüş oluyoruz. RAGE_LEFT ifadesiyle son file grouptan sonra filegroup gelmeyeceğini beyan ediyoruz. Bu sebepten RAGE_RIGHT ifadesinin seçilmesi gerekmektedir.

Daha sonra partition olan tablomuzda herhangi bir işlem yapmak için aşağıdaki Manage Partition.. bölümüne tıklanır.

Gelen ekranda bulunan kavramların ne olduğuna değinelim.

Create a staging table for partition switching: Partition değiştirme işlemi için geçici bir staging (hazırlık) tablosu oluşturur. Bu staging tablo, ana tablodaki partition’ları taşımak veya değiştirmek için kullanılır. FG2019 içerisindeki veriyi Staging table name isimli tabloya aktarır.

Switch out partition: Bir partition’ı ana tablodan dışarı çıkartır (başka bir tabloya aktarır). Genellikle eski verileri hızlıca dışarı almak için kullanılır. Örneğin: “2022 yılı verilerini başka bir tabloya taşı.”

Switch in partition: Bir staging tablodan ana tabloya bir partition’ı içeri alır Yani dışarı aldığın veriyi veya yeni hazırladığın veriyi ana tabloya ekler. Önceden tablodan çıkarılan partition tabloyu tekrardan içeriye almaktadır.

Manage partitioned data in a sliding window scenario: Sliding Window senaryosu için kullanılır Mesela her yıl yeni veri eklerken, en eski yılı tablodan çıkarma işlemi .Bu, çok büyük veri tablolarında performansı korumak için önemli.

Şunu da belirtmek gerekirse gerçek sistemde bu şekilde yapılmaması gerekmektedir bir tablo yeni oluşturulacağı zaman yapılabilir. Ya da test ortamında yapılıp daha sonra gerçek sistemde uygulanması gerekmektedir. Başka bir makalede görüşmek üzere..

Göklerde ve yerde ne varsa hepsi Allah’ındır. Allah’ın ilmi ve kudreti her şeyi kuşatmıştır. Nisa-126

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir