sys.dm_os_buffer_descriptors (Transact-SQL)
現在、SQL Server のバッファー プールにあるすべてのデータ ページに関する情報を返します。 このビューの出力は、バッファー プール内のデータベース ページのディストリビューションをデータベース、オブジェクト、または種類に従って決定するために使用できます。 SQL Server 2014 では、この動的管理ビューは、バッファー プール拡張ファイルのデータ ページに関する情報も返します。 詳細については、「バッファー プール拡張」を参照してください。
ディスクから読み込まれたデータ ページは、SQL Server のバッファー プールにコピーされ、再使用に備えてキャッシュされます。 キャッシュされたデータ ページには、それぞれ 1 つのバッファー記述子が割り当てられます。 このバッファー記述子により、SQL Server インスタンスに現在キャッシュされている各データ ページが一意に識別されます。 sys.dm_os_buffer_descriptors は、すべてのユーザー データベースおよびシステム データベースのキャッシュ ページを返します。 これには、Resource データベースに関連付けられているページも含まれます。
適用対象: SQL Server (SQL Server 2008 から現在のバージョンまで) |
列名 |
データ型 |
説明 |
---|---|---|
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 値は許容されます。 |
権限
サーバーに対する VIEW SERVER STATE 権限が必要です。
説明
sys.dm_os_buffer_descriptors では、Resource データベースで使用されているページが返されます。 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)
sys.dm_os_buffer_pool_extension_configuration (Transact-SQL)