データベースファイルのページの詳細情報を出力するSQL Server動的管理ビューレファレンス(28)

「Microsoft SQL Server」が稼働するデータベースシステムを運用する管理者に向け、「動的管理ビュー」の活用を軸にしたトラブル対策のためのノウハウを紹介していきます。今回は、データベースファイルにおけるページの詳細情報の出力について解説します。

» 2021年07月26日 05時00分 公開
[伊東敏章@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

SQL Server動的管理ビュー一覧

 本連載では、「Microsoft SQL Server(以下、SQL Server)」で使用可能な動的管理ビューについて、動作概要や出力内容などを紹介していきます。今回は動的管理関数「sys.dm_db_page_info」におけるデータベースファイルに関するページの詳細情報の出力について解説します。対応バージョンは、SQL Server 2019以降です。

概要

 SQL Serverでは、データベースのオブジェクトやユーザーデータはデータファイル(「.ndf」または「.mdf」)に記録されます。データの変更などのログ情報は、データファイルとは別に、トランザクションログファイルに記録されます。

 データファイルでは、「ページ」と呼ばれる8KBサイズの基本単位で、オブジェクトやユーザーデータへのストレージの割り当てを行います。ページは、「エクステント」と呼ばれる8ページ(64KB)をまとめた領域単位で、オブジェクトやユーザーデータへの割り当てを管理します。

 「sys.dm_db_page_info」動的管理関数を使用すると、データファイルに格納されているページについて、ページの種類やオブジェクトへの割り当て情報、格納されたデータ行数などの詳細な情報を出力できます。

構文と引数

構文 sys.dm_db_page_info (DatabaseId, FileId, PageId, Mode)

引数名 データ型 既定値 説明
DatabaseId smallint NULL データベースのIDを指定。NULLの場合エラーになる
FileId int NULL DatabaseIdで指定したデータベースのファイルのIDを指定。NULLの場合エラーになる
PageId int NULL FileIdで指定したファイル内のページのID番号を指定。NULLの場合エラーになる
Mode nvarchar(64) 'LIMITED' 出力の詳細レベルを指定。以下のいずれかの値を指定する
 ・'LIMITED'
 ・'DETAILED'
'DETAILED'を指定すると、より詳細な情報が出力される

出力内容

列名 データ型 説明
database_id int データベースID
file_id int ファイルID
page_id int ページID
page_header_version int ページヘッダバージョン
page_type int ページの種類
page_type_desc nvarchar(64) ページタイプの説明
page_type_flag_bits nvarchar(64) ページヘッダのタイプフラグビット
page_type_flag_bits_desc nvarchar(64) ページヘッダのタイプフラグビットの説明
page_flag_bits nvarchar(64) ページヘッダのフラグビット
page_flag_bits_desc nvarchar(256) ページヘッダのフラグビットの説明
page_lsn nvarchar(64) ログシーケンス番号/タイムスタンプ
page_level int インデックス内のページのレベル (leaf = 0)
object_id int ページを所有しているオブジェクトID
index_id int インデックスID (ヒープの場合は0)
partition_id bigint パーティションID
alloc_unit_id bigint アロケーションユニットID
is_encrypted bit ページが暗号化されているかどうかを示すビット
has_checksum bit ページにチェックサム値があるかどうかを示すビット
checksum int データ破損の検出に使用されるチェックサム値
is_iam_page bit ページがIAMページかどうかを示すビット
is_mixed_extent bit 混合エクステントに割り当てられているかどうかを示すビット
has_ghost_records bit ページにゴーストレコードが含まれているかどうかを示すビット
ゴーストレコードは、削除のマークが付けられているが、まだ削除されていないレコード
has_version_records bit ページにAcceleratedDatabaseRecoveryに使用されるバージョンレコードが含まれているかどうかを示すビット
pfs_page_id int 対応するPFSページのページID
pfs_is_allocated bit 対応するPFSページでページが割り当て済みとしてマークされているかどうかを示すビット
pfs_alloc_percent int PFSバイトで示される割り振りパーセント
pfs_status nvarchar(64) PFSバイト
pfs_status_desc nvarchar(64) PFSバイトの説明
gam_page_id int 対応するGAMページのページID
gam_status bit GAMに割り当てられているかどうかを示すビット
gam_status_desc nvarchar(64) GAMステータスビットの説明
sgam_page_id int 対応するSGAMページのページID
sgam_status bit SGAMに割り当てられているかどうかを示すビット
sgam_status_desc nvarchar(64) SGAMステータスビットの説明
diff_map_page_id int 対応する差分ビットマップページのページID
diff_status bit 差分ステータスが変更されたかどうかを示すビット
diff_status_desc nvarchar(64) 差分ステータスビットの説明
ml_map_page_id int 対応する最小ロギングビットマップページのページID
ml_status bit ページのログが最小かどうかを示すビット
ml_status_desc nvarchar(64) 最小ロギングステータスビットの説明
prev_page_file_id smallint 前ページファイルID
prev_page_page_id int 前のページのページID
next_page_file_id smallint 次ページファイルID
next_page_page_id int 次ページのページID
fixed_length smallint 固定サイズの行の長さ
slot_count smallint スロットの合計数(使用済みおよび未使用)
データページの場合、行数と同じ
ghost_rec_count smallint ページでゴーストとしてマークされたレコードの数
free_bytes smallint ページ上の空きバイト数
free_data_offset int データ領域末尾の空き容量のオフセット
reserved_bytes smallint すべてのトランザクションで予約されている空きバイト数(ヒープの場合)、ゴースト行の数(インデックスリーフの場合)
reserved_bytes_by_xdes_id smallint デバッグ目的でのみ使用
xdes_id nvarchar(64) デバッグ目的でのみ使用

動作例

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。