Merhabalar,
Bu yazımız içerisinde sizlere SQL Server 2014 ile gelen Buffer Pool Extension özelliğini anlatacağım. SQL Server 2014 öncesinde herhangi bir sorgu çekildiğinde bu sorguya bağlı olan data ya da index pageleri diskten okunup SQL Server Buffer Pool’a yazılır ve daha sonraki kullanımlar için cache lenir. Bu durumda eğer daha sonra bu page tekrar kullanılmak istenirse SQL Server bu page’i disk yerine buffer pool dan getirerek performans artışı sağlamış olur.
Peki SQL Server 2014 beraber gelen Buffer Pool Extension özellği ne işe yarar ?
SSD gibi veri erişim hızı yüksek olan fiziksel disklermizin Buffer Pool olarak kullanılma imkanı sağlamaktadır. Buffer Pool Extension en önemli özelliklerinden biri disk veya storage tarafında yaşabilecek bir sorun halinde Buffer Pool Extension özelliğinin kendisini disable etmesidir. Ayrıca Buffer Pool Extension alanında sadece “clean page” yani “commit” edilmiş dataları içeren page’ler bulunmaktadır ve bu sebepten herhangi bir veri kaybı söz konusu olmayacaktır.
SQL Server 2014 öncesinde Buffer pool’a alınan her bir page’in incelenmesini ( hangi database ait, hangi objelere ait ) sağlamamıza yardımcı olması için sys.dm_os_buffer_descriptors DMV’si kullanılmaktadır. SQL Server 2014 Buffer pool extension configuration değerleri için sys.dm_os_buffer_pool_extension_configuration DMV’si , page incelenmesi için ise yine sys.dm_os_buffer_descriptors isimli DMV kullanılmaktadır. Yanlız SQL Server 2014 ile bu DMV üzerine is_in_bpool_extension isimli bir kolon eklenmiştir.
SQL Server 2014 öncesi ve sonrası Buffer Pool incelenmesi için ;
Select * from sys.dm_os_buffer_descriptors
SQL Server 2014 Buffer Pool Extension incelenmesi için ;
SELECT * FROM sys.dm_os_buffer_pool_extension_configuration — Buffer Pool Extension Configuration DMV
Select * from sys.dm_os_buffer_descriptors – – SQL Server 2014 ile DMV üzerine dahil edilen is_in_bpool_extension adlı bir kolondur.
Konumuz gereği Buffer Pool Extension incelemelerine devam edelim.
Yukarıdaki resimden anlaşılacağı üzere Buffer Pool Extension özelliği Disable ( Kapalı ) durumdadır. Bu özellik Server seviyesinde bir özellik olmasından ötürü Alter Server Configuration komutu ile özelliğin Enable edilmesini sağlayacağız.
alter server CONFIGURATION
set BUFFER POOL EXTENSION ON
(FILENAME = ‘C:\BufferPoolExtension\SQLServerBufferPool.BPE’,SIZE = 3 GB)
Yukarıdaki kod parçasını çalıştırdığımızda ise aşağıdaki gibir bir hata mesajı alabiliriz. Sebebi ise SQL Server’a tanımlanmış olan Max Memory değerinden büyük bir SIZE belirtilmesi gerekiyor.
Max Memory değerinden büyük bir SIZE bilgisi vererek tekrar aşağıdaki kod parçasını çalıştırıyoruz ve işlemin başarılı bir şekilde gerçekleştiğini görüyoruz.
İşlem sonrasında ise;
Aşağıdaki Kod parçası ile oluşturduğumuz Buffer Pool Extension özelliğini disable ettiğimizde ise var olan bpe uzantılı dosyanın olmadığını görebiliriz.
İşlem Sonrasında ise ;
Buffer Pool Extension özelliğini tekrar enabled edip DMV üzerinden kolonların incelemesini yapalım.
- database_id : Page in ilişkili olduğu database in ID si
- file_id : Page in ilişkili olduğu database in file ID si
- page_id : File ın içindeki page in ID si
- page_level : Page in Index level ı
- allocation_unit_id : Bu kolonu sys.allocation_units DMV sine join için kullanacağız.
- row_count : Page de bulunan kayıt sayısı
- free_space_in_bytes : Bytes cinsinden Page in boş olan kısmını gösterir. Bu arada Page in toplam boyutu 8192 byte dır. Bunuda not olarak düşelim. Daha sonra bu değeri MB hesabında kullanacağız.
- is_modified : Eğer 1 ise page disk ten okunduktan sonra değiştirilmiş olduğu manasına gelir.
- is_in_bpool_extension : Bu alan da Page’in BPE’de mi yoksa RAM’de mi olduğunu gösterir.
Bir makalenin daha sonuna geldik,umarım faydalı olunmuştur..
Hocam güzel bir makale olmuş elinize sağlık.