sys.dm_os_buffer_descriptors (Transact-SQL)sys.dm_os_buffer_descriptors (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ:даSQL Server (начиная с 2008)даБаза данных SQL AzureдаХранилище данных SQL AzureнетParallel Data WarehouseAPPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Возвращает сведения обо всех страницах данных, расположенных в данный момент в буферном пуле SQL ServerSQL Server.Returns information about all the data pages that are currently in the SQL ServerSQL Server buffer pool. Это представление может использоваться, чтобы определить распределение страниц баз данных в буферном пуле в соответствии с базой данных, объектом или типом.The output of this view can be used to determine the distribution of database pages in the buffer pool according to database, object, or type. В SQL Server 2017SQL Server 2017 это динамическое административное представление также возвращает сведения о страницах данных в файле расширения буферного пула.In SQL Server 2017SQL Server 2017, this dynamic management view also returns information about the data pages in the buffer pool extension file. Дополнительные сведения см. в разделе расширение буферного пула.For more information, see Buffer Pool Extension.

При считывании страницы данных с диска она копируется в буферный пул SQL ServerSQL Server и кэшируется для повторного использования.When a data page is read from disk, the page is copied into the SQL ServerSQL Server buffer pool and cached for reuse. Каждая страница данных в кэше имеет один дескриптор буфера.Each cached data page has one buffer descriptor. Дескрипторы буфера уникально идентифицируют каждую страницу данных, кэшируемую в данный момент в экземпляре SQL ServerSQL Server.Buffer descriptors uniquely identify each data page that is currently cached in an instance of SQL ServerSQL Server. представление sys.dm_os_buffer_descriptors возвращает страницы в кэше для всех пользовательских и системных баз данных.sys.dm_os_buffer_descriptors returns cached pages for all user and system databases. В их число входят страницы, связанные с базой данных Resource.This includes pages that are associated with the Resource database.

Примечание: вызывать его из Хранилище данных SQL AzureAzure SQL Data Warehouse или Параллельное хранилище данныхParallel Data Warehouse, используйте имя sys.dm_pdw_nodes_os_buffer_descriptors.NOTE: To call this from Хранилище данных SQL AzureAzure SQL Data Warehouse or Параллельное хранилище данныхParallel Data Warehouse, use the name sys.dm_pdw_nodes_os_buffer_descriptors.

Имя столбцаColumn name Тип данныхData type ОписаниеDescription
database_iddatabase_id intint Идентификатор базы данных, связанный со страницей в буферном пуле.ID of database associated with the page in the buffer pool. Допускает значение NULL.Is nullable.
file_idfile_id intint Идентификатор файла, хранящего постоянный образ страницы.ID of the file that stores the persisted image of the page. Допускает значение NULL.Is nullable.
page_idpage_id intint Идентификатор страницы в файле.ID of the page within the file. Допускает значение NULL.Is nullable.
page_levelpage_level intint Индексный уровень страницы.Index level of the page. Допускает значение NULL.Is nullable.
allocation_unit_idallocation_unit_id bigintbigint Идентификатор единицы распределения страницы.ID of the allocation unit of the page. Это значение может быть использовано для соединения sys.allocation_units.This value can be used to join sys.allocation_units. Допускает значение NULL.Is nullable.
page_typepage_type nvarchar(60)nvarchar(60) Тип страницы, например: страница данных или страница индекса.Type of the page, such as: Data page or Index page. Допускает значение NULL.Is nullable.
row_countrow_count intint Количество строк на странице.Number of rows on the page. Допускает значение NULL.Is nullable.
free_space_in_bytesfree_space_in_bytes intint Объем доступного свободного места, в байтах, на странице.Amount of available free space, in bytes, on the page. Допускает значение NULL.Is nullable.
is_modifiedis_modified bitbit 1 = страница была изменена после того, как она была считана с диска.1 = Page has been modified after it was read from the disk. Допускает значение NULL.Is nullable.
numa_nodenuma_node intint Узел с неоднородным доступом к памяти для буфера.Nonuniform Memory Access node for the buffer. Допускает значение NULL.Is nullable.
read_microsecread_microsec bigintbigint Фактическое время (в миллисекундах), необходимое для считывания страницы в буфер.The actual time (in microseconds) required to read the page into the buffer. Счетчик сбрасывается, если буфер используется повторно.This number is reset when the buffer is reused. Допускает значение NULL.Is nullable.
is_in_bpool_extensionis_in_bpool_extension bitbit 1 = страница находится в расширение буферного пула.1 = Page is in buffer pool extension. Допускает значение NULL.Is nullable.
pdw_node_idpdw_node_id intint Применяется к: Хранилище данных SQL AzureAzure SQL Data Warehouse, Параллельное хранилище данныхParallel Data WarehouseApplies to: Хранилище данных SQL AzureAzure SQL Data Warehouse, Параллельное хранилище данныхParallel Data Warehouse

Идентификатор для узла, это распределение является на.The identifier for the node that this distribution is on.

РазрешенияPermissions

На SQL ServerSQL Server, требуется VIEW SERVER STATE разрешение.On SQL ServerSQL Server, requires VIEW SERVER STATE permission.
На База данных SQLSQL Database, требуется VIEW DATABASE STATE разрешение в базе данных.On База данных SQLSQL Database, requires the VIEW DATABASE STATE permission in the database.

ПримечанияRemarks

представление sys.dm_os_buffer_descriptors возвращает страницы, используются ли в базе данных ресурсов.sys.dm_os_buffer_descriptors returns pages that are being used by the Resource database. представление sys.dm_os_buffer_descriptors возвращает сведения о свободных или заимствованных страницах, или о страницах, в которых возникли ошибки при чтении.sys.dm_os_buffer_descriptors does not return information about free or stolen pages, or about pages that had errors when they were read.

ОтFrom ЧтобыTo ВOn СвязьRelationship
sys.dm_os_buffer_descriptorssys.dm_os_buffer_descriptors sys.databasessys.databases database_iddatabase_id «многие к одному»many-to-one
sys.dm_os_buffer_descriptorssys.dm_os_buffer_descriptors <UserDB >. sys.allocation_units<userdb>.sys.allocation_units allocation_unit_idallocation_unit_id «многие к одному»many-to-one
sys.dm_os_buffer_descriptorssys.dm_os_buffer_descriptors <UserDB >. sys.database_files<userdb>.sys.database_files file_idfile_id «многие к одному»many-to-one
sys.dm_os_buffer_descriptorssys.dm_os_buffer_descriptors sys.dm_os_buffer_pool_extension_configurationsys.dm_os_buffer_pool_extension_configuration file_idfile_id «многие к одному»many-to-one

ПримерыExamples

A.A. Получение количества страниц в кэше для каждой базы данныхReturning cached page count for each database

Следующий пример возвращает количество страниц в кэше, загруженных для каждой базы данных.The following example returns the count of pages loaded for each database.

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. Получение количества страниц в кэше для каждого объекта в текущей базе данныхReturning cached page count for each object in the current database

Следующий пример возвращает количество страниц в кэше, загруженных для каждого объекта в текущей базе данных.The following example returns the count of pages loaded for each object in the current database.

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;  

См. такжеSee Also

sys.allocation_units (Transact-SQL)sys.allocation_units (Transact-SQL)

Динамические административные представления, относящиеся к операционной системе SQL Server (Transact-SQL) SQL Server Operating System Related Dynamic Management Views (Transact-SQL)
База данных Resource Resource Database
sys.dm_os_buffer_pool_extension_configuration (Transact-SQL)sys.dm_os_buffer_pool_extension_configuration (Transact-SQL)