Buffer Pool Extension Nedir

Buffer Pool Extension (Arabellek Havuzu Uzantısı), SQL Server’ın bellek yönetimini iyileştirmek için SSD veya NVMe gibi yüksek hızlı depolama birimlerini RAM’e ek olarak kullanmasını sağlayan bir özelliktir.

SQL Server, sık erişilen veri sayfalarını RAM’de (Buffer Pool) tutar.RAM dolduğunda, daha az kullanılan sayfalar diske (tempdb veya LDF/MTF dosyaları)yazılır.Buffer Pool Extension, bu mekanizmaya SSD-NVMe’yi ekleyerek, disk I/O performansını artırır.

Kısacası yapının nasıl çalıştığına değinmek gerekirse, En sık kullanılan veriler burada tutulur. RAM dolunca, “cold” (soğuk) sayfalar SSD-NVMe taşınır. Bu yapı ikinci ön bellek olarak ifade edilmektedir. Geleneksel olarak en az kullanılan veriler ise HDD-SSD yapısında bulunur.

Senaryomuz aşağıdaki şekilde işlemektedir.

RAM (32 GB) → [Sık Erişilen Veriler]
↓ (RAM dolunca)
SSD (Buffer Pool Extension – 64 GB) → [Orta Sıklıkta Erişilen Veriler]
↓ (SSD de dolunca)
HDD (Normal Depolama) → [Nadir Erişilen Veriler]

Şimdi yukarıdaki bahsedilen olayların avantajlarına dezavantajlarına değinelim.

Daha Az Disk Gecikmesi: SSD, HDD’den 10-100x daha hızlıdır.
RAM Maliyetini Azaltır: 128 GB RAM yerine 32 GB RAM + 256 GB SSD kullanılabilir.
Özellikle Read-Intensive (Çok Okunan) İş Yüklerinde İyi Sonuç Verir. Reporting sorguları, Data warehousing, Büyük ölçekli analitik sorgular işlemlerinde faydalıdır.

Kısacası Buffer Pool Extension , SSD’yi sanal RAM gibi kullanarak bu sorunu hafifletir.

BPE çoğunlukla okuma (read) performansını artırır. Yoğun yazma işlemlerinde (INSERT/UPDATE/DELETE) çok etkili değildir. Aşırı yazma iş yükü SSD’yi hızla eskitebilir. Zaten yeterli RAM varsa, BPE performansı çok artırmaz.

Enterprise Edition’da sınırsız  Buffer Pool Extension boyutu verilebilir. Standard Edition’da maksimum Ram boyutunun 4 katı kadar verilebilir.

Bizler Buffer Pool Extension yapısını ne zaman veya hangi durumlarda tercih etmeliyiz. Öncelikle ram yetersiz ve ssd-nvme disk varsa bu yapıya geçirilebilir. Aynı zaman okuma işleri daha çok ağırlıklıysa bu yapıya geçilmesi faydalıdır. Ram boyutunuz yetersiz ilgili alan fiziksel olarak artırılana kadar geçici olarak bu yapı oluşturulabilir.

Buffer Pool Extension yapısını oluşturma ve kontrol işlemi için aşağıdaki yapı kullanılmaktadır. Veri kaybını engellemek için sadece commit edilmiş veriler Buffer Pool Extension’a yazılır. Buffer Pool Extension’ı aşağıdaki script yardımıyla çalışan bir sistem için gerçekleştirebiliriz.

-- Örnek: 16 GB'lık bir BPE dosyası oluşturma
ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION ON
(FILENAME = 'F:\SQL_BPE\BufferPoolExtension.BPE', SIZE = 16 GB);

Aşağıdaki komut ile buffer pool extension işlemini kontrol edebiliriz.

SELECT * FROM sys.dm_os_buffer_pool_extension_configuration;

Tekrardan oluşturduğumuz buffer pool extension yapısını kapatmak için aşağıdaki komut kullanılmaktadır.

ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION OFF;

Not: Eğer Buffer Pool Extension için set ettiğiniz alan, SQL Server için tanımlanan MAX SERVER MEMORY değerinden büyükse aşağıdaki gibi bir hata alırsınız.

The buffer pool extension size must not exceed the maximum server memory (MAX SERVER MEMORY) setting.

SQL Server, BPE’yi RAM’in bir uzantısı olarak kullandığı için BPE boyutunun MAX SERVER MEMORY’den büyük olması mümkün değildir. Bu nedenle sp_configure üzerinden max server memory değerinin BPE’den büyük olacak şekilde ayarlanması gerekmektedir.

Buffer Pool Extension kapatıldıktan sonra tekrar etkinleştirilirken, yeni tanımlanan BPE boyutu SQL Server için ayarlanan MAX SERVER MEMORY değerinden büyük olamaz. Ayrıca, daha önce kullanılan BPE dosyası disk üzerinde mevcutsa, yeni BPE boyutu eski BPE boyutundan küçük olamaz. SQL Server, mevcut BPE dosyasını küçültmeye izin vermez; çünkü bu işlem ciddi performans sorunlarına yol açabilir.

Buffer pool extension, geçici bir performans çözümüdür. Modern sistemlerde In-Memory OLTP veya daha fazla RAM tercih edilmelidir. Başka makalede görüşmek dileğiyle..

“De ki: Ey Rabbim! İlmimi artır.” Taha-114

Author: Yunus YÜCEL

Bir yanıt yazın

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