SQL Server Page Yapısı ve DBCC Page
SQL Server üzerindeki storage tiplerini SQL Server Storage Kavramları(Page, Extents, GAM, SGAM, PFS, IAM, BCM, DCM) isimli makalede görmüştük. En küçük birim olan page’in yapısında neler var? 8 KB içinde hangi veriler bulunur?
Bir page 8 KB yani 8192 Byte büyüklüğündedir. Her page’in ilk 96 Byte’lık kısmı Page Header isimli Başlık bölümünden oluşur. Burada ilgili page’in bağlı olduğu object bilgisi, en son değişikliğin hangi lsn değerinde yapıldığı, ilişkisel olarak kendisinden önce ve sonra gelen page numaraları gibi bilgiler tutulur. Bu bilgileri detaylı olarak bir sonraki makalemizde göreceğiz.
En sonda ise Row Offset Array olarak bilinen, her kayıt için kaydın başlangıç pozisyonunu belirten 2’şer Byte’lık bir bölüm bulunur. Bu sayede ilgili page içindeki kaçıncı kaydı okumak istiyorsak başlangıç değerinden o kaydı bulup okuyabiliriz. Row Offset Array; GAM, SGAM, PFS, IAM, BCM, DCM page’lerde bulunmaz. Bunun da sebebi bu page türlerinde her bir veri tek bit boyutunda saklanmaktadır.
Page Header ile Row Offset Array arasında kalan bölümde verilerimiz bulunmaktadır.
Bir Page’in içini okuyabilmek için DBCC PAGE komutu çalıştırılır. Bu komutta 4 adet parametre girilmesi gerekir.
- Veritabanı adı ya da ID’si
- Dosya numarası (filenum)
- Page numarası (pagenum)
- Okuma seçeneği
Okuma seçeneği 0 ile 3 arasında değerler alır.
0: Sadece page header okuma
1: Page header ve kayıt bazlı bölünmüş verileri hexadecimal olarak okuma
2: Bütün page’i tek bir parça olarak hexadecimal formatta okuma
3: Page Header ve kayıt bazlı bölünmüş verileri detaylı bir şekilde açık olarak okuma
DBCC Page komutunu çalıştırmadan önce mutlaka DBCC Traceon (3604) çalıştırılmalıdır. Bu komut size sonuç dönmeyi sağlar. Session süresince geçerlidir.