sys.dm_os_buffer_descriptors(Transact-SQL)
적용 대상: SQL Server Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics Analytics
Platform System(PDW)
현재 SQL Server 버퍼 풀에 있는 모든 데이터 페이지에 대한 정보를 반환합니다. 데이터베이스, 개체 또는 유형에 따라 버퍼 풀에서 데이터베이스 페이지를 배포하는 방식을 결정하는 데 이 뷰의 결과를 사용할 수 있습니다. SQL Server 이 동적 관리 뷰는 버퍼 풀 확장 파일의 데이터 페이지에 대한 정보도 반환합니다. 자세한 내용은 버퍼 풀 확장을 참조하세요.
디스크에서 데이터 페이지를 읽으면 페이지가 SQL Server 버퍼 풀에 복사되고 다시 사용할 수 있습니다. 각 캐시된 데이터 페이지에는 하나의 버퍼 설명자가 있습니다. 버퍼 설명자는 현재 SQL Server 인스턴스에 캐시된 각 데이터 페이지를 고유하게 식별합니다. sys.dm_os_buffer_descriptors는 모든 사용자 및 시스템 데이터베이스에 대해 캐시된 페이지를 반환합니다. 여기에는 Resource 데이터베이스와 연결된 페이지가 포함됩니다.
참고
Azure Synapse Analytics 또는 분석 플랫폼 시스템(PDW)에서 이를 호출하려면 이름 sys.dm_pdw_nodes_os_buffer_descriptors 사용합니다. 이 구문은 Azure Synapse Analytics의 서버리스 SQL 풀에서 지원되지 않습니다.
열 이름 | 데이터 형식 | Description |
---|---|---|
database_id | int | 버퍼 풀에 있는 페이지와 연결된 데이터베이스의 ID입니다. Null을 허용합니다. |
file_id | int | 페이지의 지속형 이미지를 저장하는 파일의 ID입니다. Null을 허용합니다. |
page_id | int | 파일 내 페이지의 ID입니다. Null을 허용합니다. |
page_level | int | 페이지의 인덱스 수준입니다. Null을 허용합니다. |
allocation_unit_id | bigint | 페이지 할당 단위의 ID입니다. 이 값은 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 | 버퍼에 대한 Nonuniform Memory Access 노드입니다. Null을 허용합니다. |
read_microsec | bigint | 페이지를 버퍼로 읽어 오는 데 필요한 실제 시간(밀리초)입니다 이 값은 버퍼를 다시 사용하면 다시 설정됩니다. Null을 허용합니다. |
is_in_bpool_extension | bit | 1 = 페이지가 버퍼 풀 확장에 있습니다. Null을 허용합니다. |
pdw_node_id | int | 적용 대상: Azure Synapse Analytics, 분석 플랫폼 시스템(PDW) 이 배포가 있는 노드의 식별자입니다. |
사용 권한
SQL Server 및 SQL Managed Instance에서는 VIEW SERVER STATE
권한이 필요합니다.
SQL Database Basic, S0 및 S1 서비스 목표 또는 탄력적 풀 내의 데이터베이스에 대해서는 서버 관리자 계정, Azure Active Directory 관리자 계정 또는 ##MS_ServerStateReader##
서버 역할의 멤버 자격이 필요합니다. 다른 모든 SQL Database 서비스 목표에 대해서는 데이터베이스에 대한 VIEW DATABASE STATE
권한 또는 ##MS_ServerStateReader##
서버 역할의 멤버 자격이 필요합니다.
SQL Server 2022 이상에 대한 권한
서버에 대한 VIEW SERVER PERFORMANCE STATE 권한이 필요합니다.
설명
sys.dm_os_buffer_descriptors 리소스 데이터베이스에서 사용 중인 페이지를 반환합니다. sys.dm_os_buffer_descriptors 무료 또는 도난당한 페이지 또는 읽을 때 오류가 발생한 페이지에 대한 정보를 반환하지 않습니다.
시작 | 대상 | 켜기 | 관계 |
---|---|---|---|
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 | 다 대 일 |
sys.dm_os_buffer_descriptors | sys.dm_os_buffer_pool_extension_configuration | file_id | 다 대 일 |
예제
A. 각 데이터베이스에 대해 캐시된 페이지 수 반환
다음 예에서는 각 데이터베이스에 대해 로드된 페이지 수를 반환합니다.
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;
추가 정보
sys.allocation_units(Transact-SQL)
SQL Server 운영 체제 관련 동적 관리 뷰(Transact-SQL)
Resource 데이터베이스
sys.dm_os_buffer_pool_extension_configuration(Transact-SQL)