Partition Tabloya Yeni Bir Function ve Scheme Ekleme

Bazen partition yapılmış bir tabloya partition yapısını bozulmaması için yeni bir file group eklenme gereği duyulabilir. Bunun için elimizde bulunan partition scheme ve partition function yapısının düzenlenmesi gerekmektedir. Bir veritabanı altındaki partition yapılmış tabloyu aşağıdaki komut ile görebiliriz. use [PartSamp] SELECT OBJECT_NAME(si.object_id) AS object_name ,pf.NAME AS pf_name ,ps.NAME AS partition_scheme_name ,p.partition_number ,ds.NAME AS partition_filegroup ,rv.value AS range_value ,( CASE pf.boundary_value_on_right WHEN 0 THEN 'RAGE_LEFT' ELSE 'RANGE_RIGHT' END ) AS range_direction ,SUM(CASE WHEN si.index_id IN ( 1 ,0 ) THEN p.rows ELSE 0 END) AS num_rows FROM sys.destination_data_spaces AS dds INNER JOIN sys.data_spaces AS ds ON dds.data_space_id = ds.data_space_id INNER JOIN sys.partition_schemes AS ps ON dds.partition_scheme_id = ps.data_space_id INNER JOIN sys.partition_functions AS pf ON ps.function_id = pf.function_id LEFT JOIN sys.partition_range_values AS rv ON pf.function_id = rv.function_id AND dds.destination_id = CASE pf.boundary_value_on_right WHEN 0 THEN rv.boundary_id ELSE rv.boundary_id + 1 END LEFT JOIN sys.indexes AS si ON dds.partition_scheme_id = si.data_space_id LEFT JOIN […]

Partition Tabloya Yeni Bir Function ve Scheme Ekleme

Bazen partition yapılmış bir tabloya partition yapısını bozulmaması için yeni bir file group eklenme gereği duyulabilir. Bunun için elimizde bulunan partition scheme ve partition function yapısının düzenlenmesi gerekmektedir.

Bir veritabanı altındaki partition yapılmış tabloyu aşağıdaki komut ile görebiliriz.

 use [PartSamp]
SELECT
OBJECT_NAME(si.object_id) AS object_name
,pf.NAME AS pf_name
,ps.NAME AS partition_scheme_name
,p.partition_number
,ds.NAME AS partition_filegroup
,rv.value AS range_value
,(
CASE pf.boundary_value_on_right
WHEN 0
THEN 'RAGE_LEFT'
ELSE 'RANGE_RIGHT'
END
) AS range_direction
,SUM(CASE
WHEN si.index_id IN (
1
,0
)
THEN p.rows
ELSE 0
END) AS num_rows
FROM sys.destination_data_spaces AS dds
INNER JOIN sys.data_spaces AS ds ON dds.data_space_id = ds.data_space_id
INNER JOIN sys.partition_schemes AS ps ON dds.partition_scheme_id = ps.data_space_id
INNER JOIN sys.partition_functions AS pf ON ps.function_id = pf.function_id
LEFT JOIN sys.partition_range_values AS rv ON pf.function_id = rv.function_id
AND dds.destination_id = CASE pf.boundary_value_on_right
WHEN 0
THEN rv.boundary_id
ELSE rv.boundary_id + 1
END
LEFT JOIN sys.indexes AS si ON dds.partition_scheme_id = si.data_space_id
LEFT JOIN sys.partitions AS p ON si.object_id = p.object_id
AND si.index_id = p.index_id
AND  dds.destination_id = p.partition_number
LEFT JOIN sys.dm_db_partition_stats AS dbps ON p.object_id = dbps.object_id 
AND p.partition_id= dbps.partition_id
WHERE si.object_id = OBJECT_ID('[ŞEMA_ADI].[TABLO_ADI]')
GROUP BY ds.NAME
,p.partition_number
,pf.NAME
,pf.type_desc
,pf.fanout
,pf.boundary_value_on_right
,ps.NAME
,si.object_id 
,rv.value
 
ORDER BY p.partition_number

Sorgumuzu çalıştırdığımızda tablomuzun partition yapısını görebiliriz.

FG2027 partition filegroup eklemek için ilk başta veritabanımızın altında ilgili yıla ait filegroup ve data file oluşturmamız gerekmektedir.

USE PartSamp
ALTER DATABASE [PartSamp] ADD FILEGROUP [FG2027]
Go
ALTER DATABASE [PartSamp] ADD FILE ( NAME = N'FG2027', FILENAME = N'H:\PartSamp\PartSamp_2027.ndf' , SIZE = 8192KB , FILEGROWTH = 65536KB ) TO FILEGROUP [FG2027]
Go

Filegroup ve data file oluşturduktan sonra  şimdi ise bu filegroup’u partition yapıya dahil etme.

İlk başta ilgili veritabanımızın altındaki storage bölümünde scheme ve function bilgilerimize ve tarih aralığına bakıyoruz.

 

Yeni bir function ve scheme ekleme işlemlerini  yaptıktan sonra tablomuzu tekrardan kontrol edelim.

Yukarıdaki resimdede görüldüğü gibi partition filegroup yapısının başarılı bir şekilde eklendiğini görmüş oluyoruz.

Bu makalede Partition yapıda oluşturulmuş bir tabloya yeni bir Function ve Scheme ekleme adımlarını görmüş olduk. Partitionla ilgili daha detaylı bilgiler almak için yunusyucel.com’u ziyaret edebilirsiniz. Partition – yunusyucel.com

Benzer Yazılar

Sql Server Database Mirroring Kurulumu

SQL Server 2 gün önce

İçindekiler 2. ÖRNEK   Bu makalede Sql Server Database Mirroring kavramını ele alacağız. Uygulamalı olarak işlemlere başlamadan önce database mirroring kavramından bahsedelim. Sql server sunucusunda bulunan bir database’in anlık olarak başka bir sunucuya yazılma işlemidir. Bu işlem database bazlı yapılmaktadır. Bu kopyalama işlemi birden fazla sunucuya aynı anda yapılmaktadır. Mirroring yapılan veritabanımız iki sunucuda aynı büyüklükte ve yapıda tutulmaktadır. Primary olan sunucumuzun başına bir iş geldiğinde veritabanı otomatik veya manuel bir şekilde ikinci sunucuya devri olmaktadır. Ana sunucunun başına herhangi bir sıkıntı geldiğinde Witness sunucu vasıtasıyla yedek sunucu devreye giriyor. Bu işlem failover cluster yapısıyla benzer bir özellik taşır. Arada witness bağlantısı olmadığında da makinalar doğrudan birbirleriyle haberleşiyor. Burada ise failover işlemi otomatik olarak yapılmaz. Herhangi bir sorun anında manuel bir şekilde yapılmaktadır. Aşağıdaki resimde görüldüğü gibi arada herhangi bir bağlantımız yok.   Mirroring durmuşsa, yeniden başlatılmadan önce primary veritabanındaki bütün transaction log backup’lar secondary sunucuya with no recovery ile […]

Windows Servis Aracılığıyla Alınan DB’nin Tablosunu Partition Yapma

SQL Server 2 gün önce

Bu makalede gerçek sistemde başka bir kurumdan servisle alınan bir veritabanında partition yapılması uygun görülen bir tablonun belirtilen kolununun partition yapılması amaçlanmaktadır.  Şimdi işlemlerimizi uygulamalı bir şekilde gerçekleştirelim. Aşağıdaki resimde görüldüğü gibi veritabanımızda herhangi bir filegroup yapısının olmadığı bunun için partition yapacağımız tablo için database üzerinde filegroupları oluşturuyorum data file ile birlikte. Not olarak şunu geçmek istiyorum partition yapılacak kolunun not null olma şartı gerekmektedir. Yoksa tablomuzu partition oluşturacağımız zaman hata vermektedir. Gerçek sistemde yapmadan önce test veritabanında yapıyorum. Şimdi yapacağımız adımlar canlı sistemdeki veritabanına servis aracılığıyla veriler gelmekte bu veriler sonradan update edilmediği için bu yöntem yapılır. Adım olarak canlı veritabanımızda partition yapılacak kolundaki tarihleri gözlemleyerek filegroup’lar ve data file’lar ekliyorum. Tarih kolununu gözlemlediğimde 2021 yılı öncesi veriler ve ondan sonra 21-22,22-23 bu şekilde mantık çerçevesinde olması için ilk filegroup ismini FG2020 yapıyorum bu şekilde 7 tane filegroup ekleme işlemlerine geçiyorum. ALTER DATABASE [PartSamp] ADD FILEGROUP [FG2020] go ALTER […]

SQL SERVER RESOURCE GOVERNOR

SQL Server 1 hafta önce

Bu makalede Sql Server ’da kaynak kullanımımız için farklı seçenekler ve değerlendirme fırsatları sunan Resource Governor yakından kullanım örneklerini göreceğiz. Günümüzde sistemlerimizin verimli kaynak kullanımı ve buna yönelik olarak çalışmalar oldukça önemli bir durumdadır. Bu kapsamda Veri tabanı sistemlerimizin kurulu olduğu sunucu kaynaklarımızdan maksimum faydayı ve verimi almaya çalışmaktayız. Bu kapsamda SQL Server veri tabanlarımızda kaynak (CPU, bellek, disk ve I/O) kullanımını yönetmek ve optimize etmek için kullanılan güçlü bir araç olan Resource Governor bizlere 2008 ve sonraki sürümlerde sunmaktadır. Bu sayede kritik iş yüklerinizin ihtiyaç duyduğu kaynaklara erişmesini sağlayabilir ve performansınızı optimize ederek veri tabanlarına gelebilecek aşırı yükü önlemiş olabilirsiniz. Biraz çalışma prensibinden bahsedelim, Resource Governor veri tabanı nesne ve sorgularında bir öncelik atayarak çalışır. Bunu şu şekilde örneklendirebiliriz sunucuya gelen uygulama sorguları var bunu servis kullanıcısı ile, raporlama sorguları var bunu raporlama kullanıcısı ile ve ilgili uygulamanın loglarının sorgulamasını yapan log kullanıcısı bulunmaktadır bu yapıda en öncelikli sorgularımız […]

0 Yorum

Yorum Yaz

Rastgele