sys.dm_os_buffer_descriptors

Возвращает сведения обо всех страницах данных, расположенных в данный момент в буферном пуле SQL Server. Это представление может использоваться, чтобы определить распределение страниц баз данных в буферном пуле в соответствии с базой данных, объектом или типом.

При считывании страницы данных с диска она копируется в буферный пул SQL Server и кэшируется для повторного использования. Каждая страница данных в кэше имеет один дескриптор буфера. Дескрипторы буфера уникально идентифицируют каждую страницу данных, расположенную в кэше в экземпляре SQL Server. Представление sys.dm_os_buffer_descriptors возвращает страницы в кэше для всех баз данных пользователя и системных баз данных. В их число входят страницы, связанные с базой данных resource.

Имя столбца Тип данных Описание

database_id

int

Идентификатор базы данных, связанный со страницей в в буферном пуле. Допускает значение NULL.

file_id

int

Идентификатор файла, хранящего постоянный образ страницы. Допускает значение NULL.

page_id

int

Идентификатор страницы в файле. Допускает значение NULL.

page_level

int

Индексный уровень страницы. Допускает значение NULL.

allocation_unit_id

bigint

Идентификатор единицы размещения страницы. Это значение может быть использовано для соединения sys.allocation_units. Допускает значение NULL.

Примечание.   В представлении sys.dm_os_buffer_descriptors в столбце allocation_unit_id могут отображаться несуществующие значения для тех кластеризованных индексов, которые были созданы в более ранних версиях SQL Server, чем SQL Server 2005.

page_type

nvarchar(60)

Тип страницы, например: страница данных или страница индекса. Допускает значение NULL. Дополнительные сведения см. в разделе Страницы и экстенты.

row_count

int

Количество строк на странице. Допускает значение NULL.

free_space_in_bytes

int

Объем доступного свободного места, в байтах, на странице. Допускает значение NULL.

is_modified

bit

1 = страница была изменена после того, как она была считана с диска. Допускает значение NULL.

Разрешения

Требуется разрешение VIEW SERVER STATE на сервере.

Замечания

Представление sys.dm_os_buffer_descriptors возвращает страницы, которые использует база данных resource. Оно не возвращает сведения о свободных или заимствованных страницах, а также о страницах, при чтении которых возникали ошибки.

От В Вкл. Связь

sys.dm_os_buffer_descriptors

sys.databases

database_id

«многие к одному»

sys.dm_os_buffer_descriptors

<userdb>.sys.allocation_units

allocation_unit_id

«многие к одному»

sys.dm_os_buffer_descriptors

<userdb>.sys.database_files

file_id

«многие к одному»

Примеры

А. Получение количества страниц в кэше для каждой базы данных

Следующий пример возвращает количество страниц в кэше, загруженных для каждой базы данных.

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 
    ,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.hobt_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

Журнал изменений

Версия Журнал

17 июля 2006 г.

Новое содержимое
  • Дополнительные примеры.

См. также

Справочник

sys.allocation_units (Transact-SQL)
Динамические административные представления и функции
Динамические административные представления, относящиеся к операционной системе SQL Server

Другие ресурсы

База данных Resource

Справка и поддержка

Получение помощи по SQL Server 2005