DEFINITIONS

Definitions More Info.
Definition ID514
TitleSQL
CategoryNOTES
DefinitionCHECKPOINT
Definition Descriptionhttp://binedir.com/blogs/sql-server/archive/2013/02/22/sql-server-2012-_3101_ndirect-checkpoint-zelli-i.aspx Checkpoint, SQL Server Database Engine servisi tarafından çalıştırılan ve Buffer Cache diye adlandırılan bellek bölgesindeki Dirty Page’lerin diske yani data dosyasına yazılması işlemidir. Dirty Page kavramı ise az önce bahsettiğimiz Buffer Cache bellek bölgesinde bulunan ve üzerinde değişlik yapılmış(delete,update vb) fakat hala fiziksel olarak diske yazılmamış page olarak adlandırılmaktadır. Yani bir veri üzerinde bizim yapmış olduğumuz değişlikler doğrudan data dosyası üzerinde yapılmaz öncelikle değiştirilecek verinin saklandığı page Buffer Cache denilen bellek bölgesine alınır ve burada gerekli değişlikler yapıldıktan sonra SQL Serverın Checkpoint komutunu çalıştırmasıyla fiziksel olarak data dosyasına yazılır. Fakat dikkat ederseniz yapılan bir değişlik belli aralıkla data dosyasına yazılıyor ve yazılana kadar Buffer Cache dediğimiz bellek bölgesinde yani diğer ifadeyle RAM’de tutuluyor. Bu yapının avantajı RAM’in diske göre daha hızlı olması sebebiyle okuma ve yazma işlemleri için veriye erişim hızlı oluyor fakat Checkpoint komutu öncesinde data dosyasına yazılmamış veriler SQL Server’ın ani durumlarda beklenmedik bir şekilde kapanmasıyla data dosyasına yazılmamış olacaktır. Bildiğimiz gibi bu yazılmayan veriler tabi ki kaybolmayacaktır çünkü fiziksel olarak data dosyasında değişlik yapılmamış olsa bile veritabanımızın log dosyasında bu işler tutulacak ve biz SQL Server tekrara başlattığımızda bu işler data dosyasına yazılacaktır. Fakat bu işlemlerin data dosyasına yazılmasına kadar geçen sürede veritabanı erişilmez durumda olacaktır. Bu erişilmez olma süresini azaltmak adına yapılabilecek en pratik çözüm Checkpoint sıklığını artırarak iki Checkpoint arasındaki süreyi azaltmak olacaktır. Fakat SQL Server 2012 öncesindeki sürümlerde Checkpoint süresi dakika bazında değiştiriliyordu ve yapılan bu değişlik SQL Server bazında geçerli oluyordu. Yani kullandığımız tüm veritabanları için aynı Checkpoint süresini kullanabiliyorduk. Fakat SQL Server 2012 ile beraber her veritabanı özel olarak saniye seviyesinde değer verebileceğimiz ve adına Indirect Checkpoint denilen bir özellik eklendi. Target Recovery Time (Seconds) adıyla eklenen bu özellikle yukarıda da belirttiğim gibi veritabanı seviyesinde bir özellik olup her veritabanımız için değişken değerler kullanabileceğimiz şekilde özelleştirildi. Şimdi bu parametrenin kullanılan değerine nasıl bakacağımız ve nasıl değiştirebileceğimize değinelim.
RecordBycunay
Record Date30-05-2014 09:02:58
Düzenle
Kopyala
Sil