sys.dm_os_buffer_descriptors (Transact-SQL)

Şu anda da tüm veri sayfaları hakkında bilgi verir SQL Server arabellek havuzu.Bu görünüm çıkışını, veritabanı sayfalarının arabellek havuzu için veritabanı, nesne veya türüne göre dağılımı belirlemek için kullanılabilir.

Veri sayfa diskten okunan sayfa içine kopyalanır SQL Server arabellek havuzu ve yeniden kullanım için önbelleğe alınanHer sayfa önbelleğe alınan veriler, bir arabellek tanımlayıcısı yok.Arabelleği tanımlayıcıları benzersiz olarak tanımlayan bir örnek önbelleğe alınır her veri sayfa SQL Server.sys.dm_os_buffer_descriptorsverir, tüm kullanıcı ve sistem veritabanlarıiçin sayfaları önbelleğe.Bu ilişkili sayfaları içerir Resource veritabanı.

Sütun adı

Veri türü

Açıklama

database_id

int

arabellek havuzu sayfa ile bağlantılı veritabanı kimliği.NULL olur.

file_id

int

sayfakalıcı görüntü saklayan dosya kimliği.Boşalabilir mi

page_id

int

Dosyadaki sayfa kimliği.NULL olur.

page_level

int

sayfa düzey dizin.Boşalabilir mi

allocation_unit_id

bigint

sayfa ayırma birimi kimliği.Bu değer, birleştirmekkullanılabilirsys.allocation_units. NULL olur.

 Not   sys.dm_os_buffer_descriptorsVarolmayan değerleri gösterebilir allocation_unit_id sürümlerinde oluşturulan kümelenmiş dizinler için SQL Server daha önceki SQL Server 2005.

page_type

nvarchar(60)

sayfa, aşağıdaki gibi yazın: Veri sayfa veya dizin sayfa.NULL olur.Daha fazla bilgi için, bkz. Anlama sayfaları ve kapsam.

row_count

int

sayfasatır sayısı.NULL olur.

free_space_in_bytes

int

Bayt cinsinden kullanılabilir boş alan miktarı sayfa.NULL olur.

is_modified

bit

1 = Sayfanın diskten okunduktan sonra değiştirildi.NULL olur.

numa_mode

int

Arabellek için bellek erişimi düğümü nonuniform.

İzinler

Sunucu üzerindeki görünüm server state izni gerektirir.

Açıklamalar

sys.dm_os_buffer_descriptorstarafından kullanılan sayfaları verir Resource veritabanı.sys.dm_os_buffer_descriptorsbunları okurken, hatalar sayfalarını veya serbest veya çalınmış sayfaları hakkında bilgi vermez.

Dan

Amacı

Üzerinde

İlişki

sys.dm_os_buffer_descriptors

sys.databases

database_id

çok bir

sys.dm_os_buffer_descriptors

<userdb>.sys.allocation_units

allocation_unit_id

çok bir

sys.dm_os_buffer_descriptors

<userdb>.sys.database_files

file_id

çok bir

Örnekler

A.Her veritabanı için önbelleğe alınan sayfa sayısı döndürme

Aşağıdaki örnek, her veritabanı için yüklenen sayfaların sayısını döndürür.

SELECT count(*)AS cached_pages_count
    ,CASE database_id 
        WHEN 32767 THEN 'ResourceDb' 
        ELSE db_name(database_id) 
        END AS Database_name
FROM sys.dm_os_buffer_descriptors
GROUP BY db_name(database_id) ,database_id
ORDER BY cached_pages_count DESC;

B.Geçerli veritabanındaki her nesne için önbelleğe alınan sayfa sayısı döndürme

Aşağıdaki örnek, geçerli veritabanındaki her nesne için yüklenen sayfaların sayısını döndürür.

SELECT count(*)AS cached_pages_count 
    ,name ,index_id 
FROM sys.dm_os_buffer_descriptors AS bd 
    INNER JOIN 
    (
        SELECT object_name(object_id) AS name 
            ,index_id ,allocation_unit_id
        FROM sys.allocation_units AS au
            INNER JOIN sys.partitions AS p 
                ON au.container_id = p.hobt_id 
                    AND (au.type = 1 OR au.type = 3)
        UNION ALL
        SELECT object_name(object_id) AS name   
            ,index_id, allocation_unit_id
        FROM sys.allocation_units AS au
            INNER JOIN sys.partitions AS p 
                ON au.container_id = p.partition_id 
                    AND au.type = 2
    ) AS obj 
        ON bd.allocation_unit_id = obj.allocation_unit_id
WHERE database_id = db_id()
GROUP BY name, index_id 
ORDER BY cached_pages_count DESC;