SQL Server mimarisinde, veritabanı değişikliklerinin (Transaction Log) ikincil bir sunucuya (Availability Groups veya Mirroring) aktarılması, sistem performansını ve veri güvenliğini doğrudan etkileyen kritik bir süreçtir. Bu sürecin temelinde verinin nasıl paketlendiği ve ağ üzerinden nasıl taşındığı yatar. Bu makalede, Log Block ve Network Packet Size arasındaki hiyerarşik ilişkiyi ve bu parametrelerin performans için nasıl optimize edileceğini inceleyeceğiz.
SQL Server, her bir log kaydını tek tek ağa göndermek yerine, bunları bellekte (Log Buffer) biriktirir. Bu birikmiş yapıya Log Block denir.
- Maksimum 60 KB’dır.
- Log bloğu dolduğunda (60 KB), bir COMMIT işlemi geldiğinde veya dahili zamanlayıcılar (genellikle milisaniyeler seviyesinde) tetiklendiğinde bu blok “flush” edilerek gönderilmeye hazır hale getirilir.
SQL Server ile diğer sunucular veya istemciler arasındaki iletişim, paketler halinde gerçekleşir. SQL Server konfigürasyonundaki network packet size (varsayılan 4 KB), bu iletişimin her bir parçasının ne kadar büyük olacağını belirler.
SQL Server, 60 KB’lık bir Log Block’u göndermeye karar verdiğinde, bu veri doğrudan tek bir paket olarak ağa çıkmaz. Katmanlı bir yapı izlenir:
- Eğer ağ paket boyutu 4 KB ise, 60 KB’lık bir Log Block, ağ katmanında 15 farklı ağ paketine bölünür.
- Her bir ağ paketi kendi başlık (header) bilgilerini taşır. 15 paket kullanılması, 15 adet başlık bilgisi ve 15 adet “paket gönderildi/alındı” onayı (acknowledgment) demektir.
- İkincil sunucu tüm bu parçaları alır, birleştirir ve tekrar orijinal 60 KB’lık Log Block haline getirerek işler.
Yüksek trafikli sistemlerde 4 KB’lık varsayılan değer, işlemci üzerinde gereksiz bir paketleme yükü (CPU overhead) ve ağ üzerinde gecikme (latency) yaratabilir.
Log bloklarının maksimum 60 KB olduğu düşünüldüğünde, network packet size değerini 32 KB yapmak şu avantajları sağlar:
- 60 KB’lık veri 15 parça yerine sadece 2 parçada gönderilir.
- Paket başlığı maliyeti azalır.
- Ağ kartı (NIC) üzerindeki işlem yükü hafifler.
Mevcut durumu kontrol etmek ve optimize etmek için aşağıdaki SQL komutları kullanılır:
Mevcut Ayarı Kontrol Etme:
SELECT name, value_in_use AS [ActiveValue_Bytes]
FROM sys.configurations
WHERE name = 'network packet size (B)';

Değeri 32 KB (32768 Byte) Olarak Güncelleme:
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
EXEC sp_configure 'network packet size', 32768;
RECONFIGURE;
GO
SQL Server’da log aktarım hızı, sadece disk performansına değil, verinin ağ üzerindeki yolculuğuna da bağlıdır. Log Block boyutuna (60 KB) daha yakın bir Network Packet Size (32 KB) seçmek, paketleme verimliliğini artırarak yüksek erişilebilirlik (HA) çözümlerindeki gecikmeleri (HADR Latency) minimize eder.
Başka makalede görüşmek dileğiyle..
“Allah, kuluna yetmez mi?”Zümer Suresi; 36. Ayet
