sys.dm_os_buffer_descriptors (Transact-SQL)

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

Diskten okunan veri sayfasının, sayfa kopyalanır SQL Server havuzu arabellek ve yeniden kullanılmak üzere önbelleğe. Her veri önbelleğe sayfa bir arabellek tanımlayıcısına sahip.Buffer descriptors uniquely identify each data page that is currently cached in an instance of SQL Server.sys.dm_os_buffer_descriptors returns cached pages for all user and system databases.Bu, kaynak veritabanı ile ilişkili sayfaları içerir.

Sütun adı

Veri türü

Açıklama

database_id

int

Ilişkili veritabanı KIMLIĞI sayfa arabellek havuzu.Null.

file_id

int

Sayfa görüntüsünü kalıcı saklayan dosya KIMLIĞI.Null

page_id

int

Dosya içindeki sayfa KIMLIĞI.Null.

page_level

int

Sayfa düzey dizin.Null

allocation_unit_id

bigint

Ayırma birimi KIMLIĞINI sayfa.Bu değer, allocation_units katılmak için kullanılabilir.Null.

Not sürümlerinde oluşturulan kümelenmiş dizinler için allocation_unit_id, varolmayan bir değerler sys.dm_os_buffer_descriptors gösterebilirSQL Server tarihi SQL Server 2005.

page_type

nvarchar(60)

Türü sayfa, örneğin: Veri sayfa veya dizin sayfa. Null.Daha fazla bilgi için bkz:Anlama sayfaları ve alanları.

row_count

int

Sayfadaki satır sayısı.Null.

free_space_in_bytes

int

Sayfa üzerinde kullanılabilir boş alanı, bayt cinsinden miktarı.Null.

is_modified

bit

1 = sayfa diskten okumak sonra değiştirildi.Null.

numa_mode

int

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

İzinler

Sunucudaki SUNUCU DURUM VIEW iznine gerek duyar.

Remarks

sys.dm_os_buffer_descriptors returns pages that are being used by the Resource database.sys.dm_os_buffer_descriptors does not return information about free or stolen pages, or about pages that had errors when they were read.

Gelen

Amacı

Üzerinde

İlişki

sys.dm_os_buffer_descriptors

sys.Databases

database_id

bire çok

sys.dm_os_buffer_descriptors

<userdb>. allocation_units

allocation_unit_id

bire çok

sys.dm_os_buffer_descriptors

<userdb>. sys.database_files

file_id

bire çok

Örnekler

C.Her veritabanı için önbelleğe alınan sayfa sayısı olarak döndürülüyor

Aşağıdaki örnek, her veritabanı için yüklü olan sayfaların sayısını verir.

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.Her nesne için önbelleğe alınan sayfa sayısı geçerli veritabanında döndürülüyor

Aşağıdaki örnek, geçerli veritabanındaki her nesne için yüklü olan sayfaların sayısını verir.

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;