SQL Server Table Partition Switch


Warning: Invalid argument supplied for foreach() in /home/veritaba/domains/veritabani.org/public_html/wp-content/themes/seub/functions-74.php on line 1735

Modern veri merkezlerinde ve büyük ölçekli bilişim sistemlerinde, sistemlerin esnekliği ve verimliliği üzerine yapılan çalışmalar, partition switch’lerin (bölünme anahtarları) kritik rolünü giderek daha belirgin hale getirmektedir. Bu yazımızda sizlere Partition Switch işleminden bahsedeceğim. Partition Switch öncesi Partition işleminin nasıl yapıldığı hakkında bilgi almak için Duran BÜYÜKÖZTÜRK hocamın SQL Server Table Partition Oluşturmak makalesine göz atabilirsiniz. Öncelikle yapısal olarak birebir eş iki tablo oluşturuyoruz (Alan sayıları ve alanların Data tipleri eşit ve her ikisi de aynı Partition schema üzerinden partiton yapılmış). Resimde görüldüğü üzere içerisinde veri bulunan tablomuz ‘Satislar’, İçerisine switch işlemi ile verileri atacağımız tablomuz ‘Satislar2’. Bu iki tablo yapısal olarak birbirleriyle eş tablolardır ve aynı partition schema üzerine partition yapılmıştır. SELECT p.partition_number,p.partition_id, fg.name AS [filegroup],r.boundary_id, CONVERT(DATE,r.value) AS BoundaryValue, p.rows FROM sys.tables AS t INNER JOIN sys.indexes AS i ON t.object_id = i.object_id INNER JOIN sys.partitions AS p ON i.object_id = p.object_id AND i.index_id = p.index_id INNER JOIN sys.allocation_units a […]

SQL Server Table Partition Switch

Warning: Invalid argument supplied for foreach() in /home/veritaba/domains/veritabani.org/public_html/wp-content/themes/seub/functions-74.php on line 1735

Modern veri merkezlerinde ve büyük ölçekli bilişim sistemlerinde, sistemlerin esnekliği ve verimliliği üzerine yapılan çalışmalar, partition switch’lerin (bölünme anahtarları) kritik rolünü giderek daha belirgin hale getirmektedir. Bu yazımızda sizlere Partition Switch işleminden bahsedeceğim. Partition Switch öncesi Partition işleminin nasıl yapıldığı hakkında bilgi almak için Duran BÜYÜKÖZTÜRK hocamın SQL Server Table Partition Oluşturmak makalesine göz atabilirsiniz.

Öncelikle yapısal olarak birebir eş iki tablo oluşturuyoruz (Alan sayıları ve alanların Data tipleri eşit ve her ikisi de aynı Partition schema üzerinden partiton yapılmış).

Resimde görüldüğü üzere içerisinde veri bulunan tablomuz ‘Satislar’, İçerisine switch işlemi ile verileri atacağımız tablomuz ‘Satislar2’. Bu iki tablo yapısal olarak birbirleriyle eş tablolardır ve aynı partition schema üzerine partition yapılmıştır.

SELECT p.partition_number,p.partition_id, fg.name AS [filegroup],r.boundary_id, CONVERT(DATE,r.value) AS BoundaryValue, p.rows

FROM sys.tables AS t INNER JOIN sys.indexes AS i ON t.object_id = i.object_id

INNER JOIN sys.partitions AS p ON i.object_id = p.object_id AND i.index_id = p.index_id

INNER JOIN sys.allocation_units a ON a.container_id = p.hobt_id

INNER JOIN sys.filegroups fg ON fg.data_space_id = a.data_space_id

INNER JOIN sys.partition_schemes AS s ON i.data_space_id = s.data_space_id

INNER JOIN sys.partition_functions AS f ON s.function_id = f.function_id

LEFT OUTER JOIN sys.partition_range_values AS r ON f.function_id = r.function_id AND r.boundary_id = p.partition_number

WHERE i.type <= 1 AND a.type = 1 AND t.name= 'Satislar'

ORDER BY p.partition_number DESC;

Yukarıda görmüş olduğunuz script yardımı ile ‘Satislar’ tablosunda hangi partition’da kaç adet veri olduğunu görebiliriz.

Satislar tablomuza SatisTarihi kolonuna göre Partition yapıldı ve tablomuzda toplamda 830 kayıt bulunmaktadır. Satislar2 Tablomuzun içerisinde veri bulunmamaktadır. Peki biz Satislar tablomuzda bulunan ‘1996’ yılına ait verileri Satislar2 tablomuza taşımak istersek bunu DML yöntemiyle yapabiliriz fakat ‘1996’ yılına ait 154 kaydı ‘Satislar’ tablomuzdan Satislar2 tablosuna INSERT etmemiz daha sonra da Satislar tablomuzdan bu kayıtları silmemiz gerekecekti. Unutmayalım ki kayıt sayımız her zaman bu kadar az olmayacak ve bu işlem belkide günler sürecekti. Tam olarak bu durumda Partition Switch çok işimize yaracaktır.Burada dikkat edilmesi gereken hedef partiton’ın mutlaka boş olması gerektiği (Switch öncesi Satislar2 tablomuzun ikinci Partitionın’da hiç data olmamalı). Resimde görüldüğü üzere 1996 tarihli kayıtlar 2 numaralı partition’da tutulmaktadır. Bu tarih aralığındaki verileri Satislar tablosundan Satislar2 tablosuna yukarıdaki script yardımı ile DML işlemlerine gerek kalmadan taşıyabiliriz. Şimdi bu işlem sonrası tablolarımızı kontrol edelim.Partition Switch işlemi sonrası ‘Satislar’ tablomuzda bulunan 154 kayıt ‘Satislar2’ tablosuna taşıma işlemi gerçekleştirilmiştir.

 

 

 

Benzer Yazılar

ULAŞILAMAYAN DİSKTEKİ DATABASE FİLE KURTARMA

SQL Server 4 saat önce

Warning: Invalid argument supplied for foreach() in /home/veritaba/domains/veritabani.org/public_html/wp-content/themes/seub/functions-74.php on line 1735

Bu makalede Sql Server ’da diskine ulaşılamayan bir veri tabanının files taşıma adımlarından bahsedeceğim. Diyelim ki database files konumlandırmış olduğumuz disklerden bir tanesi offline durumuna geçtiğini gördünüz ve diskin durumu hakkında net bilgi edinememektesiniz. Diskin içerisinde bulunan verileri kurtarmak istiyorsunuz ama disk offline durumda olduğundan dolayı içine erişim sağlayamıyorsunuz bu gibi durumda benim kullanmış olduğum bir yöntemi sizinle paylaşmak istiyorum, Robocopy. Şimdi bir örnek üzerinden adım adım neler yapabileceğimize bakalım. Öncelikle database files konumlandırını tespit ediyoruz; SELECT name as FileLogicalName, physical_name as FileLocation FROM sys.master_files WHERE database_id =DB_ID(N’MuratTest’) Görsel – 1   Database files konumlandırını tespit ettikten sonra offline durumuna getirerek ilgili files konumlarını değiştireceğiz. 1) Öncelikle database offline state çekiyoruz. use master GO ALTER DATABASE [MuratTest] SET OFFLINE WITH ROLLBACK IMMEDIATE 2) Database file taşıma işlemlerini gerçekleştiriyoruz, Command Prompt Rus aas administrator ile çalıştırılır; robocopy D:\Data3\Data D:\Data4\Data /mir /mt:60 /r:2 /w:5 /np /ts /bytes /xd >>D:\Data3\log1.txt Görsel – 2 […]

SQL Server DMV ve DMF – 5

SQL Server 2 hafta önce

Warning: Invalid argument supplied for foreach() in /home/veritaba/domains/veritabani.org/public_html/wp-content/themes/seub/functions-74.php on line 1735

Bu yazıda SQL Server’da DMV ve DMF serisinin 4.süne devam edeceğiz. Bir önceki yazımızda sys.dm_os_sys_info DMV’si altında neleri göreceğimizi ve sciprtler ile baktığımızda neleri okuyabileceğimizi görmüştük. Özellikle CPU kaynaklarının SQL server tarafından nasıl kullanıldığı öğrenmiştik. Bu yazıda sys.dm_os_sys_info ve memory ile ilişkili DMV’ler yardımı ile Memory kaynaklarının nasıl kullanıldığı ve burada nelerin dikkat edilmesi hususunda bilgileri öğrenmiş olacağız. Bildiğiniz gibi kaynaklara ilişkin bilgilere sys.dm_os_sys_info üzerinden erişebiliyorduk. Buffer Pool kullanım durumunu kontrol etmek istediğimde;   SELECT (physical_memory_kb)/1024 AS physical_memory_MB, (committed_kb)/1024.0 as BPool_Committed_MB, (committed_target_kb)/1024.0 as BPool_Commit_Tgt_MB, (visible_target_kb)/1024.0 as BPool_Visible_MB FROM  sys.dm_os_sys_info; Görsel – 1 physical_memory_MB: Fiziksel olarak server üzerindeki memory miktarı. visible_target_KB: Buffer Pool içerisinde yer alan 8KB’lık Buffer’ların sayısını gösterir. Bu değerin çok düşük olması Memory hataları veya memory dump alınmasına neden olacaktır. committed_kb: SQL Server tarafından kullanılan Actual Memory değeridir. committed_target_kb: SQL Server tarafından tüketilmek için denenen memory miktarıdır. committed_target_kb > committed_kb durumunda; SQL Server Mmemory Manager ek memory ihtiyacı […]

FAILOVER CLUSTER INSTANCE (FCI) FAILOVER

SQL Server 1 ay önce

Warning: Invalid argument supplied for foreach() in /home/veritaba/domains/veritabani.org/public_html/wp-content/themes/seub/functions-74.php on line 1735

Bu makalede Windows Failover Cluster Instance (WFCI) kurulu olan sunucular arasında failover işlem adımlarından bahsedeceğim. SQL Server Failover Cluster Instance (WFCI) ortamımızda sunucular arasında failover işlemini gerçekleştirmeden önce dikkat edilmesi gereken adımlar: Ortamın hızlı bir şekilde failover işlemini gerçekleştirebilmesi için veri tabanlarının .ldf file ‘larının shrink edilmesi ve veri tabanlarına checkpoint atılması gerekmektedir. İlgili clusterda bulunan sunucuların versiyon ve konfigürasyon ayarlarının eşlenik olması gerekmektedir. Failover Cluster Instance ortak disk yedekli sunucu mantığı ile çalıştığı için uygulama veri tabanları ve sistem veri tabanlarını barındıran disklerin tüm sunucularda zone işlemlerinin gerçekleştirilmiş olması gerekmektedir. Yetkili kullanıcı olan service kullanıcılarının computer manager ‘dan sunucu üzerinde gerekli yetkilendirmelerinin yapılması. SQL Server Failover Cluster Instance (WFCI) ortamımızda sunucular arasında failover işlemi için iki yöntem bulunmaktadır bunlar; 1) Failover Cluster Manager > Roles > ilgili role sağ tık > Move > Select Node > failover edilmek istenilen node seçilir ve failover işlemi gerçekleşir. Ancak burada bu yönetimin […]

0 Yorum

Yorum Yaz

Rastgele