Aracılığıyla paylaş


Nesneleri tarafından kullanılan alanı yönetme

Dizin ayırma Haritası (IAM) sayfa 4 gigabayttan (GB) kısmında bir ayırma birimi tarafından kullanılan bir veritabanı dosyası kapsamlarını eşleştirir.Ayırma birimi, üç türden biridir:

  • in_row_data

    Öbek ya da dizin bölümünü içerir.

  • lob_data

    Büyük bir nesne (LOB) veri türleri gibi tutar xml, varbinary(max), ve varchar(max).

  • row_overflow_data

    Değişken uzunlukta veri depolanan tutar varchar, nvarchar, varbinary, veya sql_variant sütunları 8,060 bayt satır boyut sınırını aşıyor.

Her yığın ya da dizin bölümü en az IN_ROW_DATA ayırma birimi içerir.Ayrıca, bir LOB_DATA veya ROW_OVERFLOW_DATA ayırma birimi öbek ya da dizin şema bağlı de içerebilir.Ayırma birimleri hakkında daha fazla bilgi için bkz: Tablo ve dizin kuruluşu.

Bir IAM sayfa, bir dosya 4 GB aralığında kapsar ve GAM veya SGAM sayfamla aynı Karşılama ' dir.Ayırma birimi kapsamlarını birden fazla dosya veya bir dosyanın birden fazla 4 GB aralık içeriyorsa, birden çok IAM sayfaları, bir IAM zincirdeki bağlı olacaktır.Bu nedenle, her ayırma birimi en az bir IAM sayfa kapsamlarını taşıdığından, her dosya için vardır.Da olabilir IAM birden fazla sayfaya, dosya ayırma birimi için ayrılmış bir dosya üzerinde kapsamlarını aralık IAM sayfa kaydedebilirsiniz aralık aşıyor.

Index Allocation Map (IAM) pages managing extents

IAM sayfaları ayrılmış olarak her bir ayırma birimi için gerekli ve rasgele dosyasında bulunur.Sistem görünümü sys.system_internals_allocation_unitsIAM ilk sayfasına bir ayırma birimi için bir puan.Bu bir ayırma birimi için tüm IAM sayfaları bir zincirdeki bağlıdır.

Important noteImportant Note:

The sys.system_internals_allocation_units system view is for internal use only and is subject to change.Uyumluluk sağlanır.

IAM pages linked in a chain per allocation unit

Bir IAM sayfası başlangıç kapsamını IAM sayfa tarafından eşlenen kapsamlarını aralık gösteren bir başlık vardır.Bir kapsam içinde her bit gösterir büyük bit eşlem IAM sayfa da var.Ilk kill bitini eşleme, aralık ilk boyutuna gösteren, ikinci bit ikinci kapsam vb. gösterir.Bit 0 ise, onu temsil edecek bir kapsam için ayrılmamış ayırma birimi the IAM sahip.Kill bitini 1 ise, temsil ettiği sürece IAM sayfa olan bir tahsisat birimine tahsis edilir.

Zaman SQL Server Database Engine Yeni bir satır eklemek olan ve geçerli sayfada kullanılabilir alan yok, bu IAM ve PFS sayfalarını ayırmak için , bir sayfayı bulmak için kullandığı veya için yığın veya metin/Görüntü sayfasında, satır tutacak yeterli boş alanı içeren bir sayfa. The Database Engine uses the IAM pages to find the extents allocated to the ayırma birimi. Her bir kapsam için Database Engine bir sayfa kullanılabilir olup olmadığını görmek için PFS sayfaları arar. Bir veritabanında birkaç IAM ve PFS sayfaları şekilde IAM ve PFS her sayfanın veri sayfaları, çok sayıda kapsar.Bu IAM ve PFS sayfaları genellikle bellekte olduðu anlamýna gelir SQL Server arabellek havuzu, bu nedenle, hızlı bir şekilde aranabilir. Dizinler için yeni bir satır, ekleme noktasını dizin anahtar tarafından küme.Bu durumda, daha önce açıklanan arama işlemi gerçekleşmez.

The Database Engine allocates a new kapsam to an ayırma birimi only when it cannot quickly find a sayfa in an existing kapsam with sufficient space to hold the row being inserted. The Database Engine allocates extents from those available in the dosya grubu using a proportional allocation algorithm. Bir dosya grubu iki dosya ve iki kez boş alan olarak diğer varsa, iki sayfa dosyasındaki kullanılabilir alanı olan başka bir dosyadan ayrılan her bir sayfa için paylaştırılacaktır.Bu, her bir dosya grubu dosyasında kullanılan alanı yüzdesi benzer olması gerektiğini anlamına gelir.