sys.dm_os_buffer_descriptorsGROUP (Transact-sql)

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

Veri sayfası diskten okunan sayfa içine kopyalanır SQL Serverarabellek havuzu ve yeniden kullanmak üzere önbelleğe. Her önbelleğe alınmış veri sayfası bir arabelleği tanımlayıcısı vardır. Arabelleği tanımlayıcıları benzersiz olarak tanımlayan her veri sayfası örneği şu anda önbelleğe alınan SQL Server. sys.dm_os_buffer_descriptorsdöner için tüm kullanıcı ve sistem veritabanlarındaki sayfaları önbelleğe alınmış. Bu, ilişkili oldukları sayfaları içerir Resourceveritabanı.

Sütun adı

Veri türü

Açıklama

database_id

int

Arabellek havuzu sayfa ile ilişkilendirilmiş veritabanı Kımlığı. NULL olabilecek olduğunu.

file_id

int

Sayfanın kalıcı görüntü saklayan dosya Kımlığı. NULL olabilecek

page_id

int

Sayfa içinde dosya Kımlığı. NULL olabilecek olduğunu.

page_level

int

Sayfanın dizin düzeyi. NULL olabilecek

allocation_unit_id

bigint

Sayfa ayırma birimi Kımlığı. Katılmak için bu değer kullanılabilir sys.allocation_units. NULL olabilecek olduğunu.

Not   sys.dm_os_buffer_descriptorsvarolmayan değerleri göstermek olabilir allocation_unit_id, sürümlerinde oluşturulan Kümelenmiş dizinler için SQL Serverdaha önce SQL Server 2005.

page_type

nvarchar(60)

Sayfası, gibi yazın: veri sayfası veya dizin sayfası. NULL olabilecek olduğunu. Daha fazla bilgi için, bkz. SQL Server Operating System Related Dynamic Management Views.

row_count

int

Sayfadaki satır sayısı. NULL olabilecek olduğunu.

free_space_in_bytes

int

Bayt cinsinden, kullanılabilir boş alan miktarı sayfasında. NULL olabilecek olduğunu.

is_modified

bit

1 = Sayfanın diskten okumak sonra değiştirildi. NULL olabilecek olduğunu.

numa_mode

int

Arabellek nonuniform bellek erişimi düğüm.

İzinler

Sunucu üzerindeki VIEW server state izni gerektirir.

Açıklamalar

sys.dm_os_buffer_descriptorstarafından kullanılan sayfaları verir Resourceveritabanı. sys.dm_os_buffer_descriptorsveya ne zaman onlar okumak vardı hataları vardı sayfaları ücretsiz ya da çalınmış sayfaları hakkında bilgi vermez.

Kaynak

Amacı

Tarih

İlişki

sys.dm_os_buffer_descriptors

sys.databases

database_id

çoktan bire

sys.dm_os_buffer_descriptors

<userdb>.sys.allocation_units

allocation_unit_id

çoktan bire

sys.dm_os_buffer_descriptors

<userdb>.sys.database_files

file_id

çoktan bire

Ö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;

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ü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;

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;

Ayrıca bkz.

Başvuru

allocation_units (Transact-sql)

Dinamik yönetimi görünümler ve işlevler (Transact-sql)

SQL Server işletim sistemi ilgili dinamik yönetim görünümleri (Transact-sql)

Kavramlar

Kaynak veritabanı