# SQL Server'da Partition Değişiklikleri Nasıl Yönetilmeli?

Table partitioning büyük tablolar için güçlü bir performans aracı. Ama partition yapısında yapılan değişiklikler doğru yönetilmezse hem performans hem veri bütünlüğü açısından ciddi riskler doğurur.

Partition Nedir, Neden Değiştirilir? Partition, büyük bir tabloyu mantıksal parçalara böler. Genellikle tarih bazlı yapılır: her ay ya da her yıl ayrı bir partition. Bu yapı sorgu performansını artırır, bakım işlemlerini kolaylaştırır. Ama zamanla partition yapısının değiştirilmesi gerekebilir:

Yeni partition function tanımlanması Partition scheme değiştirilmesi Mevcut partition'ların bölünmesi ya da birleştirilmesi Filegroup yapısının güncellenmesi

Partition Değişikliğinin Riski Veri taşıma süresi: Partition yapısı değiştiğinde mevcut verinin yeniden organize edilmesi gerekebilir. Büyük tablolarda bu saatler alabilir. Kilit problemi: Partition değişikliği sırasında tablo kilitlenebilir. Yoğun saatlerde yapılırsa sistem durabilir. Sorgu planı değişimi: Partition yapısı değiştiğinde query optimizer farklı planlar seçebilir. Performans beklenmedik şekilde değişebilir.

Mevcut Partition Yapısını İnceleme sql-- Tablonun partition bilgilerini görüntüle SELECT p.partition\_number AS PartitionNo, p.rows AS SatirSayisi, prv.value AS SinirDegeri, fg.name AS FilegroupAdi FROM sys.partitions p JOIN sys.indexes i ON p.object\_id = i.object\_id AND p.index\_id = i.index\_id JOIN sys.partition\_schemes ps ON i.data\_space\_id = ps.data\_space\_id JOIN sys.partition\_functions pf ON ps.function\_id = pf.function\_id LEFT JOIN sys.partition\_range\_values prv ON pf.function\_id = prv.function\_id AND p.partition\_number = prv.boundary\_id + 1 JOIN sys.destination\_data\_spaces dds ON ps.data\_space\_id = dds.partition\_scheme\_id AND p.partition\_number = dds.destination\_id JOIN sys.filegroups fg ON dds.data\_space\_id = fg.data\_space\_id WHERE p.object\_id = OBJECT\_ID('dbo.BuyukTablo') AND i.index\_id = 1 ORDER BY p.partition\_number;

Yeni Partition Ekleme En yaygın senaryo: aylık partition yapısında yeni ay eklenmesi. sql-- Yeni partition ekle ALTER PARTITION FUNCTION pfAylik() SPLIT RANGE ('2025-01-01'); Bu işlem görece güvenli ama yine de değişiklik yönetim sürecinden geçmeli. Özellikle hangi filegroup'a eklendiği kontrol edilmeli.

Partition Değişikliklerini Değişiklik Sürecine Dahil Etmek Partition değişikliği büyük tablolarda yüksek riskli operasyon olarak sınıflandırılmalı. Bu kategorideki değişiklikler için: Etkilenen tablo boyutu önceden hesaplanmalı. Tahmini süre deployment planına eklenmeli. Kesinti penceresi genişletilmeli. DBA ve uygulama ekibinin birlikte hazır bulunması sağlanmalı.

Sonuç Partition değişiklikleri teknik karmaşıklığı yüksek operasyonlar. Değişiklik yönetim sürecine dahil edilmesi hem riskleri azaltır hem de sorun çıktığında geri dönüş yolunu netleştirir. Detaylı bilgi için: sqlchangeguard.com
