Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
База данных SQL Azure
Управляемый экземпляр SQL Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
База данных SQL в Microsoft Fabric
Возвращает сведения обо всех страницах данных, которые в настоящее время находятся в буферном пуле SQL Server. Это представление может использоваться, чтобы определить распределение страниц баз данных в буферном пуле в соответствии с базой данных, объектом или типом. В SQL Server этот динамический режим управления также возвращает сведения о страницах данных в файле расширения буферного пула. Дополнительные сведения см. в разделе "Расширение буферного пула".
Когда страница данных считывается с диска, страница копируется в буферный пул SQL Server и кэшируется для повторного использования. Каждая страница данных в кэше имеет один дескриптор буфера. Дескрипторы буферов однозначно определяют каждую страницу данных, которая в настоящее время кэшируется в экземпляре SQL Server. sys.dm_os_buffer_descriptors возвращает кэшированные страницы для всех пользовательских и системных баз данных. В их число входят страницы, связанные с базой данных Resource.
Note
Чтобы вызвать это из Azure Synapse Analytics или Analytics Platform System (PDW), используйте имя sys.dm_pdw_nodes_os_buffer_descriptors. Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.
| Название столбца | Тип данных | Description |
|---|---|---|
| идентификатор_базы_данных | int | Идентификатор базы данных, связанный со страницей в буферном пуле. Может принимать значение NULL. В База данных SQL Azure значения уникальны в одной базе данных или эластичном пуле, но не в логическом сервере. |
| идентификатор_файла | int | Идентификатор файла, хранящего постоянный образ страницы. Может принимать значение NULL. |
| page_id | int | Идентификатор страницы в файле. Может принимать значение NULL. |
| page_level | int | Индексный уровень страницы. Может принимать значение NULL. |
| allocation_unit_id | bigint | Идентификатор единицы распределения страницы. Это значение может быть использовано для соединения sys.allocation_units. Может принимать значение NULL. |
| page_type | nvarchar(60) | Тип страницы, например страницы данных или страницы индекса. Может принимать значение NULL. |
| row_count | int | Количество строк на странице. Может принимать значение NULL. |
| free_space_in_bytes | int | Объем доступного свободного места, в байтах, на странице. Может принимать значение NULL. |
| is_modified | bit | 1 = страница была изменена после того, как она была считана с диска. Может принимать значение NULL. |
| numa_node | int | Узел с неоднородным доступом к памяти для буфера. Может принимать значение NULL. |
| read_microsec | bigint | Фактическое время (в миллисекундах), необходимое для считывания страницы в буфер. Счетчик сбрасывается, если буфер используется повторно. Может принимать значение NULL. |
| is_in_bpool_extension | bit | 1 = страница находится в расширении буферного пула. Может принимать значение NULL. |
| pdw_node_id | int |
применимо к: Azure Synapse Analytics, система платформы аналитики (PDW) Идентификатор узла, на который находится это распределение. |
Permissions
Для SQL Server и Управляемого экземпляра SQL требуется разрешение VIEW SERVER STATE.
В базе данных SQL базовые, S0и S1 целей службы, а также для баз данных в эластичных пулах, требуется учетная запись администратора сервера сервера, учетная запись администратора Microsoft Entra или членство в роли сервера ##MS_ServerStateReader##. Для всех остальных целей службы базы данных SQL требуется разрешение VIEW DATABASE STATE на базу данных или членство в роли сервера ##MS_ServerStateReader##.
Разрешения для SQL Server 2022 и более поздних версий
Требуется VIEW разрешение на состояние производительности сервера на сервере.
Замечания
sys.dm_os_buffer_descriptors возвращает страницы, используемые базой данных ресурсов. sys.dm_os_buffer_descriptors не возвращает сведения о бесплатных или украденных страницах или о страницах с ошибками при чтении.
| От | Кому | Включено | Relationship |
|---|---|---|---|
| sys.dm_os_buffer_descriptors | sys.databases | идентификатор_базы_данных | «многие к одному» |
| sys.dm_os_buffer_descriptors | <userDB>.sys.allocation_units | allocation_unit_id | «многие к одному» |
| sys.dm_os_buffer_descriptors | <userDB>.sys.database_files | идентификатор_файла | «многие к одному» |
| sys.dm_os_buffer_descriptors | sys.dm_os_buffer_pool_extension_configuration | идентификатор_файла | «многие к одному» |
Examples
А. Получение количества страниц в кэше для каждой базы данных
Следующий пример возвращает количество страниц в кэше, загруженных для каждой базы данных.
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. Получение количества страниц в кэше для каждого объекта в текущей базе данных
Следующий пример возвращает количество страниц в кэше, загруженных для каждого объекта в текущей базе данных.
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;