Buffer Pool Extension Nedir
Buffer Pool Extension SQL Server 2014 ile gelen bir özelliktir. Kısaca SQL Server’ın Buffer Pool için belirttiğimiz diski kullanmasıdır diyebiliriz. (Performans problemi yaşamamanız için belirteceğiniz diskin hızlı olması gerekmektedir. Örneğin SSD Disk)
Peki Buffer Pool Nedir?
SQL Server’da data ve index page’leri direk diskten okunmaz. Öncelikle SQL Server için memory’de ayrılmış buffer pool dediğimiz alana atılarak cache’lenir ve buradan kullanıcıya iletilir. Çok okunan verilerin her seferinde diskten okunmaması ve tekrar çağrıldığında buffer pool(memory de sql server’ın data ve index page’leri cache’lemek için kullandığı alan)’dan daha hızlı bir şekilde ve disk I/O yapmadan kullanıcıya iletilmesini sağlar. Buffer Pool ve SQL Server’ın veriyi yönetme şeklini daha iyi anlamak için “Database Checkpoint Nedir” isimli makalemi okumanızı tavsiye ederim.
Buffer Pool Extension, Memory’si yeterli olmayan veritabanı sunucuları için çok ideal bir seçenektir. Eğer bu sunucuda tanımlı SSD diskiniz varsa bu SSD diski bu işlem için kullanabilirsiniz.
Buffer Pool Extension için kullandığımız diskte bir problem oluşursa SQL Server otomatik olarak Buffer Pool Extension’ı disable eder.
Buffer Pool Extension özelliğini sadece Enterprise ve Standart Edition’da kullanabilirsiniz.
Buffer Pool Extension için aşağıdaki iki dmw’yi kullanabilirsiniz.
select * from sys.dm_os_buffer_pool_extension_configuration select * from sys.dm_os_buffer_descriptors
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.
ALTER SERVER CONFIGURATION SET BUFFER POOL EXTENSION ON (FILENAME = 'C:\MSSQL\BufferPoolExtensionOrnek.BPE',SIZE = 10 GB)
Eğer Buffer Pool Extension için set ettiğiniz alan SQL Server için set ettiğiniz MAX SERVER MEMORY’den küçükse aşağıdaki gibi bir hata alırsınız. “MAX SERVER MEMORY ve diğer ayarlar için “Numa Nodes, MAX/MIN Server Memory, Lock Pages In Memory, MAXDOP” ve “sp_configure(SQL Server’da Server Seviyesinde Konfigurasyonlar)” isimli makalelerimi okumanızı tavsiye ederim.
Msg 868, Level 16, State 1, Line 1
Buffer pool extension size must be larger than the current memory allocation threshold 10240 MB. Buffer pool extension is not enabled.
Buffer Pool Extension’ı aşağıdaki şekilde kapatabilirsiniz.
ALTER SERVER CONFIGURATION SET BUFFER POOL EXTENSION OFF
Buffer Pool Extension’ı kapattıktan sonra tekrar açmak istediğinizde set edeceğiniz değer MAX SERVER MEMORY’den büyükse ve daha önce Buffer Pool Extension için set ettiğiniz alan’dan küçükse yine bu hatayı alırsınız. Yani Buffer Pool Extension için set edeceğiniz alanı iyi hesaplayarak set etmenizi tavsiye ederim. Bu durumdan kurtulmak için SQL Server Servisini restart etmeniz gerekecektir.
Msg 868, Level 16, State 1, Line 1
Buffer pool extension size must be larger than the current memory allocation threshold 10240 MB. Buffer pool extension is not enabled.