SQL Server Storage Kavramları(Page, Extents, GAM, SGAM, PFS, IAM, BCM, DCM)
SQL Server’ın storage üzerindeki en temel birimi Page’dir. Her bir page 8 KB’dan oluşur. İşletim sisteminden disk allocate eden(mdf ya da ndf dosyalarının büyümesi,disk alanı tahsis etmesi olarak düşünebilirsiniz.)mdf ya da ndf dosyaları mantıksal olarak page’lere bölünür. Disk üzerinden yapılan IO page seviyesinde gerçekleşir. SQL Server Page’leri yönetmek için Extent’leri kullanır.
Her Extent 8 page’den oluşur ve 64 KB boyuta sahiptir. İki tip extent vardır.
- Uniform Extents(Sadece bir objenin sahip olduğu Extent tipi)
- Mixed Extents(Birden fazla objenin sahip olduğu Extent tipi. Bir extent’te 8 page olduğu için bir extent içinde en fazla 8 objeye ait page olabilir)
SQL Server alanı daha verimli kullanabilmek için bir objeye direk bir Uniform Extent tahsis etmez. Öncelikle Extent’i Mixed Extent olarak oluşturur. Eğer aynı obje 8 page’i dolduracak kadar büyürse bu oluşturulan Mixed Extent daha sonra Uniform Extent’e dönüştürülür.”Diskimizi maksimum performansta kullanabiliyor muyuz?” isimli makalemi okumanızı tavsiye ederim.
SQL Server’daki page tipleri aşağıdaki gibidir:
Data Pages |
Text,ntext,image,nvarchar(max),varchar(max),varbinary(max) ve xml veri tipi dışındaki tüm veri tipleri data page’lerde tutulur. |
Index Pages |
Indexler, Index page’lerde tutulur. |
Text/Image Pages |
Text,ntext,image,nvarchar(max),varchar(max)varbinary(max) ve xml veri tipleri tutulur. Varchar,nvarchar,varbinary veri tiplerini kullanan kolonlar için veri boyutu 8 KB’ı geçerse bu veriler Text/Image page’lerde tutulur |
Global Allocation Map Pages, Shared Global Allocation Map Pages |
Gam page’lerde Hangi Extentler allocate edilmiş, hangileri allocate edilmemiş bilgisi tutulur. SGam page’lerde Hangi Extentler Mixed Extent olarak kullanılıyor bilgisi tutulur. |
Page Free Space Pages |
PFS Extent’lerdeki hangi page’de ne kadar boş alan var bunun bilgisi tutar. |
Index Allocation Map Pages |
Hangi page’in hangi objeye ait olduğu bilgisi tutulur. |
Bulk Changed Map |
En son alınan log backup’tan sonraki bulk işlemler tarafından değiştirilen Extent’lerin bilgisi tutulur. |
Differential Changed Map |
En son alınan backup’tan sonra değişen Extent’lerin bilgisi tutulur. |
Elinize sağlık, çok güzel bir yazı olmuş. Birde makeleler içerisindeki bahsettiğiniz eski makalelerinize link verirseniz çok daha güzel olacak 🙂
Teşekkür ederim. Linkleri ekliyoruz kısa bir süre sonra tamamlanmış olacak.