SQL Server page’lerdeki hataları ve bu hatalardan kaynaklı tamamlanamayan I/O işlemlerini loglamak için Page Verify özelliğini kullanılmaktadır. Page Verify özelliği None, TornPageDetection ve Checsum değerlerini alabilmektedir. Bu yazımda bu seçeneklerin neler olduklarını ve best practice olarak hangi seçeneğin seçilmesi gerektiğini inceliyor olacağız.

Page Verify özelliği veritabanı seviyesinde tanımlanan bir değerdir. TSQL ile şu şekilde değiştirilir;

ALTER DATABASE [dbDeneme] SET PAGE_VERIFY CHECKSUM WITH NO_WAIT

 

Aynı işlemi SSMS’de veritabanı özeliklerinden şu şekilde yapabiliriz.

image

Page Verify özelliğinin alabileceği değerler ve açıklamaları şu şekildedir;

  • CHECKSUM : Bu seçenek seçildiği zaman, ilgili page disk’e yazılırken SQL Server Database Engine tarafından bir checksum değeri hesaplanır ve bu değer page’in header’ına konulur. Page disk’ten okunmak istendiğinde checksum değeri tekrar hesaplanır ve daha önce page header’a yazılan değer ile karşılaştırılır.
  • TORN_PAGE_DETECTION : Bu seçenek seçildiği zaman, ilgili page disk’e yazılırken page’in içerisindeki her 512 byte’lık sector için 2-bit’lik bir değer page header’a yazılır. Page disk’ten okunduğunda daha önce page header’a yazılan torn bit’ler gerçek page sector bilgileri ile karşılaştırılır.
  • NONE : Bu seçenek seçildiği zaman page diskten okunurken Checksum veya Torn Page olarak herhangi bir karşılaştırma ve kontrol yapılmaz.

Checksum, Torn_Page_Detection’a oranla performansa daha az etkisi olduğu ve daha güvenli olduğu için tercih edilmektedir.