적용 대상:SQL 서버
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
분석 플랫폼 시스템(PDW)
Microsoft Fabric의 SQL 데이터베이스
현재 SQL Server 버퍼 풀에 있는 모든 데이터 페이지에 대한 정보를 반환합니다. 이 뷰의 출력을 사용하여 데이터베이스, 개체 또는 형식에 따라 버퍼 풀의 데이터베이스 페이지 분포를 확인할 수 있습니다. SQL Server에서 이 동적 관리 뷰는 버퍼 풀 확장 파일의 데이터 페이지에 대한 정보도 반환합니다. 자세한 내용은 버퍼 풀 확장을 참조 하세요.
디스크에서 데이터 페이지를 읽으면 페이지가 SQL Server 버퍼 풀에 복사되고 재사용을 위해 캐시됩니다. 캐시된 각 데이터 페이지에는 하나의 버퍼 설명자가 있습니다. 버퍼 설명자는 현재 SQL Server 인스턴스에 캐시된 각 데이터 페이지를 고유하게 식별합니다. sys.dm_os_buffer_descriptors 모든 사용자 및 시스템 데이터베이스에 대해 캐시된 페이지를 반환합니다. 여기에는 Resource 데이터베이스와 연결된 페이지가 포함됩니다.
참고 항목
Azure Synapse Analytics 또는 PDW(Analytics Platform System)에서 이를 호출하려면 이름 sys.dm_pdw_nodes_os_buffer_descriptors 사용합니다. 이 구문은 Azure Synapse Analytics의 서버리스 SQL 풀에서 지원되지 않습니다.
| 열 이름 | 데이터 형식 | 설명 |
|---|---|---|
| database_id | int | 버퍼 풀에 있는 페이지와 연결된 데이터베이스의 ID입니다. Null을 허용합니다. Azure SQL Database에서 값은 단일 데이터베이스 또는 탄력적 풀 내에서 고유하지만 논리 서버 내에는 고유하지 않습니다. |
| 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 | 버퍼에 대한 비유형 메모리 액세스 노드입니다. Null을 허용합니다. |
| read_microsec | bigint | 페이지를 버퍼로 읽어 오는 데 필요한 실제 시간(밀리초)입니다 이 값은 버퍼를 다시 사용하면 다시 설정됩니다. Null을 허용합니다. |
| is_in_bpool_extension | bit | 1 = 페이지가 버퍼 풀 확장에 있습니다. Null을 허용합니다. |
| pdw_node_id | int |
적용 대상: Azure Synapse Analytics, Analytics Platform System(PDW) 이 배포가 있는 노드의 식별자입니다. |
사용 권한
SQL Server 및 SQL Managed Instance에서는 VIEW SERVER STATE 권한이 필요합니다.
SQL Database Basic, S0 및 S1 서비스 목표 또는 탄력적 풀 내의 데이터베이스에 대해서는 서버 관리자 계정, Microsoft Entra 관리자 계정 또는 ##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)