Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: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;