Cumartesi , 20 Ekim 2018

SQL Server 2014 Buffer Pool Extension Özelliği

SQL Server kullanırken karşılaştığımız sorunların büyük kısmı I/O kaynaklıdır.Bu sebeple SQL Server I/O işlemlerini azaltmak adına sık eriştiği verileri içeren page’leri diskten okumak yerine RAM üzerinde Buffer Pool ya da buffer cach’da tutmaktadır. Bu sebeple makineye fiziksel olarak RAM eklemek Buffer Pool için kullanılacak alanı boyutunu büyütecek ve buna paralel olarak performans artacaktır. Fakat bazı durumlarda halihazırda kullandığımız makinelere daha fazla RAM eklemek mümkün olmayabilir. Örneğin kullandığımız makinenin donanım desteği yeni RAM eklenmesine izin vermiyorsa veya işletim sistemi seviyesinde kullanabileceğimiz maksimum RAM miktarı sınırlıysa veya her ne kadar eskiye göre daha ucuz olsa bile hala RAM fiyatlarının Disk fiyatlarına göre daha maliyetli olması gibi durumlar makinelere fiziksel olarak RAM eklenmesine mani olmaktadır.

SQL Server 2014 ile beraber tanıtılan Buffer Pool Extension özelliği,SSD() gibi veri erişim hızı yüksek olan fiziksel diklerimizi Buffer Pool olarak kullanma imkanı sağlamaktadır. Özellikle makinelerimize kısıtlamalardan ötürü RAM ekleyemediğimiz durumlarda, Buffer Pool boyutu artırarak performans kazanmamızı sağlamaktadır. Buffer Pool Extension özelliğinin en güzel yanlarından biri ise Buffer Pool olarak kullandığımız disk veya storage üzerinde herhangi bir sorun yaşanması durumunda özellik otomatik olarak disable ediliyor ve herhangi bir sorun çıkarmıyor.Ayrıca Buffer Pool Extension özelliğini aktif ettiğimizde kullandığımız Buffer Pool Extension alanında sadece clean page yani commit edilmiş dataları içeren page’ler bulunmaktadır bu sebeple herhangi bir veri kaybı da söz konusu olmayacaktır.

Buffer Pool Extension özelliğinin bir diğer avantajı, bu özelliğin konfigürasyonu ve kullanımının basit olması ve uygulama tarafında hiç bir değişlik gerektirmemesidir. Özelikle okuma işlemlerinin yoğun kullanıldığı durumlarda bu özelliğin aktif edilmesi uygulamamızın performansını artıracaktır.

SQL server 2014′e Buffer Pool Extension özelliği ile beraber bu özellik hakkında bize bilgi veren sys.dm_os_buffer_pool_extension_configuration adında bir tane DMV eklendi ve var olan sys.dm_os_buffer_descriptors DMV’ına da o an page’in Buffer Pool’da olup olmadığı bilgisini veren bir kolon eklendi.

Şimdi SQL server 2014′de Buffer Pool Extension özelliği kullanmadan önce bu özelliğin aktif olup olmadığını sys.dm_os_buffer_pool_extension_configuration adlı DMV’ımızı sorgulayarak kontrol edelim.

SELECT * FROM sys.dm_os_buffer_pool_extension_configuration

sql server 2014 buffer pool extension 1

Yukarıdaki resimde gördüğümüz gibi Buffer Pool Extension özelliği şuan disable durumdadır. Bu özellik server seviyesinde bir özellik olduğu için bunu değiştirmek için ALTER Server Configuration komutunu aşağıdaki söz dizimi ile kullanmamız gerekiyor.

sql server 2014 buffer pool extension 2

Yukarıdaki resimde gördüğü gibi ALTER Server Configuration komutunu Set Buffer Pool Extension parametresi ile kullandığımız on veya off yapabiliyoruz. Fakat burada seçeneği enable etmek için On kullandığımızda bizden ekstra olarak Fiziksel olarak Buffer Pool olaraka kullanılacak dosyanın yolu ve kilobayt, megabyte veya gigabyte cinsinden boyutunu belirtmemiz gerekiyor. Fakat dikkat etmemiz gerek nokta verdiğimiz boyutun makinemizin RAM miktarından daha fazla olması zorunluluğudur.

Şimdi aşağıdaki gibi Buffer Pool Extension özelliği enable etmeye çalışalım.

sql server 2014 buffer pool extension 3

Yukarıdaki komutun çalışmasıyla aşağıdaki gibi bir hata alacağız.

sql server 2014 buffer pool extension 4

Yukarıdaki hata bizi Buffer Pool Extension özelliği enable yapmak için belirlediğimiz Size parametresinin makine üzerindeki 32767 MB RAM’den daha büyük olması gerektiğini söylüyor. Şimdi kodumuzu aşağıdaki gibi değiştirip çalıştıralım.

sql server 2014 buffer pool extension 5

Yukarıdaki kodumuzun başarılı bir şekilde çalıştığını gördükten sonra kullandığımız klasör içinde aşağıdaki gibi bir dosya oluşacaktır.

sql server 2014 buffer pool extension 6

SQL Server 2014 üzerinde Buffer Pool Extension özelliğini kullanmak istemiyorsak yine Alter Server Configuration komutunu aşağıdaki gibi kullanarak bu özelliği Disable edebiliriz.

sql server 2014 buffer pool extension 7

Yukarıdaki gibi Buffer Pool Extension özelliğini disable ettiğimizde az önce oluşturduğumuz bpe uzantılı dosya da otomatik olarak silinecektir.

sql server 2014 buffer pool extension 8

Buffer Pool Extension özelliğini kullanırken bize faydalı olacak özelliklerden biri de var olan sys.dm_os_buffer_descriptors DMV’ına eklenen ve Page’in Buffer Pool’da olup olmadığı bilgisini tutan is_in_bpool_extension adlı bit bir kolondur.

sql server 2014 buffer pool extension 9

Yukarıdaki gibi belli bir anda kullandığımız Buffer Pool Extension içinde ne kadar page olduğunu ve dolayısıyla bu değeri 8 KB ile çarparak toplamda ne kadar yer kapladığı bilgisine erişebiliriz. Bu değerin yüksek olması durumunda Buffer Pool Extension boyutunun büyütülmesini de seçenek olarak düşünebiliriz.

 

Hakkında ismailadar

Cevapla

E-posta adresiniz yayınlanmayacak. Required fields are marked *

*


*

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>