sys.dm_db_xtp_checkpoint_files (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
インメモリ OLTP チェックポイント ファイルに関する情報 (ファイル サイズ、物理的な場所、トランザクション ID など) を表示します。
Note
閉じていない現在のチェックポイントの場合、 sys.dm_db_xtp_checkpoint_files
の状態列は新しいファイルの UNDER CONSTRUCTION になります。 チェックポイントは、最後のチェックポイント以降に十分なトランザクション ログが増加した場合、または CHECKPOINT
コマンドを発行した場合に自動的に閉じます。 詳細については、「CHECKPOINT (Transact-SQL)」を参照してください。
メモリ最適化ファイル グループは、メモリ内テーブルの挿入行と削除行を格納するために、追加専用ファイルを内部的に使用します。 ファイルには 2 種類あります。 データ ファイルには挿入された行が含まれますが、デルタ ファイルには削除された行への参照が含まれています。
SQL Server 2014 (12.x) は、より新しいバージョンとは大きく異なり、 SQL Server 2014で説明されています。
詳細については、「 メモリ最適化オブジェクトのストレージの作成と管理を参照してください。
SQL Server 2016 (13.x) 以降
次の表では、SQL Server 2016 (13.x)以降のsys.dm_db_xtp_checkpoint_files
の列について説明します。
列名 | 種類 | 説明 |
---|---|---|
container_id | int | データまたはデルタ ファイルの一部であるコンテナーの ID ( sys.database_files で FILESTREAM 型のファイルとして表されます)。 sys.database_files (Transact-SQL)のfile_id との結合。 |
container_guid | uniqueidentifier | ルート、データ、またはデルタ ファイルの一部であるコンテナーの GUID。 sys.database_files テーブル内のfile_guid と結合します。 |
checkpoint_file_id | uniqueidentifier | チェックポイント ファイルの GUID。 |
relative_file_path | nvarchar (256) | マップされるコンテナーに対する相対ファイルのパス。 |
file_type | smallint | -1 (無料) DATA ファイルの場合は 0。 DELTA ファイルの場合は 1。 ROOT ファイルの場合は 2 LARGE DATA ファイルの場合は 3 |
file_type_desc | nvarchar(60) | FREE - FREE として保持されているすべてのファイルを割り当てに使用できます。 空きファイルは、システムによって予想されるニーズに応じてサイズが異なる場合があります。 最大サイズは 1 GB です。 DATA - データ ファイルには、メモリ最適化テーブルに挿入された行が含まれます。 DELTA - Delta ファイルには、削除されたデータ ファイル内の行への参照が含まれています。 ROOT - ルート ファイルには、メモリ最適化オブジェクトとネイティブ コンパイル オブジェクトのシステム メタデータが含まれます。 LARGE DATA - 大きなデータ ファイルには、(n)varchar(max) 列と varbinary(max) 列に挿入された値と、メモリ最適化テーブルの列ストア インデックスの一部である列セグメントが含まれます。 |
internal_storage_slot | int | 内部ストレージ アレイ内のファイルのインデックス。 NULL ROOT または 1 以外の状態の場合。 |
checkpoint_pair_file_id | uniqueidentifier | 対応する DATA ファイルまたは DELTA ファイル。 NULL ROOT の場合。 |
file_size_in_bytes | bigint | ディスク上のファイルのサイズ。 |
file_size_used_in_bytes | bigint | まだ設定されているチェックポイント ファイルのペアの場合、この列は次のチェックポイントの後に更新されます。 |
logical_row_count | bigint | データの場合、挿入された行の数。 Delta の場合、ドロップ テーブルを計算した後に削除された行の数。 ルートの場合は NULL。 |
州 | smallint | 0 - 事前作成済み 1 - 建設中 2 - ACTIVE 3 - マージ ターゲット 8 - ログの切り捨てを待機しています |
state_desc | nvarchar(60) | PRECREATED - トランザクションの実行中に新しいファイルを割り当てる待機を最小限に抑えたり排除したりするために、多数のチェックポイント ファイルが事前に割り当てられます。 これらのファイルのサイズは異なる場合があり、ワークロードの推定ニーズに応じて作成されます。 データが含まれています。 これは、MEMORY_OPTIMIZED_DATA ファイル グループを持つデータベースのストレージ オーバーヘッドです。 UNDER CONSTRUCTION - これらのチェックポイント ファイルは構築中です。つまり、データベースによって生成されたログ レコードに基づいて設定されており、チェックポイントの一部ではありません。 ACTIVE - 以前に閉じられたチェックポイントから挿入または削除された行が含まれます。 データベースの再起動時にトランザクション ログのアクティブな部分を適用する前に、領域がメモリに読み込まれるテーブルの内容が含まれます。 マージ操作がトランザクション ワークロードに対応していると仮定すると、これらのチェックポイント ファイルのサイズはメモリ最適化テーブルのメモリ内サイズの約 2 倍になると予想されます。 MERGE TARGET - マージ操作のターゲット - これらのチェックポイント ファイルには、マージ ポリシーによって識別されたソース ファイルの統合データ行が格納されます。 マージがインストールされると、MERGE TARGET は ACTIVE 状態に遷移します。 ログの切り捨てを待機中 - マージがインストールされ、MERGE TARGET CFP が永続的チェックポイントの一部になると、マージ ソース チェックポイント ファイルはこの状態に遷移します。 この状態のファイルは、メモリ最適化テーブルを使用したデータベースの操作の正確性のために必要です。 たとえば、永続的なチェックポイントから復旧して、時間をさかのぼって戻る場合などです。 |
lower_bound_tsn | bigint | ファイル内のトランザクションの下限。状態が (1, 3) でない場合に NULL します。 |
upper_bound_tsn | bigint | ファイル内のトランザクションの上限。状態が (1, 3) でない場合に NULL します。 |
begin_checkpoint_id | bigint | 開始チェックポイントの ID。 |
end_checkpoint_id | bigint | 終了チェックポイントの ID。 |
last_updated_checkpoint_id | bigint | このファイルを更新した最後のチェックポイントの ID。 |
encryption_status | smallint | 0、1、2 |
encryption_status_desc | nvarchar(60) | 0 =暗号化されていない> 1 = キー 1 で暗号化された> 2 = キー 2 で暗号化> 。 アクティブなファイルに対してのみ有効です。 |
SQL Server 2014 (12.x)
次の表では、SQL Server 2014 (12.x)のsys.dm_db_xtp_checkpoint_files
の列について説明します。
列名 | 種類 | 説明 |
---|---|---|
container_id | int | データまたはデルタ ファイルの一部であるコンテナーの ID ( sys.database_files で FILESTREAM 型のファイルとして表されます)。 sys.database_files (Transact-SQL)のfile_id との結合。 |
container_guid | uniqueidentifier | データまたはデルタ ファイルの一部であるコンテナーの GUID。 |
checkpoint_file_id | GUID | データ ファイルまたはデルタ ファイルの ID。 |
relative_file_path | nvarchar (256) | コンテナーの場所を基準とする、データ ファイルまたはデルタ ファイルの相対パス。 |
file_type | tinyint | 0 はデータ ファイルに対応。 1 はデルタ ファイルに対応。 NULL 状態列が 7 に設定されている場合は 。 |
file_type_desc | nvarchar(60) | ファイルの種類: 状態列が 7 に設定されている場合は、DATA_FILE、DELTA_FILE、または NULL 。 |
internal_storage_slot | int | 内部ストレージ アレイ内のファイルのインデックス。 NULL 状態列が 2 または 3 でない場合は 。 |
checkpoint_pair_file_id | uniqueidentifier | 対応するデータ ファイルまたはデルタ ファイル。 |
file_size_in_bytes | bigint | 使用されているファイルのサイズ。 NULL 状態列が 5、6、または 7 に設定されている場合。 |
file_size_used_in_bytes | bigint | 使用されているファイルによる使用済みサイズ。 NULL 状態列が 5、6、または 7 に設定されている場合。まだ設定されているチェックポイント ファイルのペアの場合、この列は次のチェックポイントの後に更新されます。 |
inserted_row_count | bigint | データ ファイル内の行数。 |
deleted_row_count | bigint | デルタ ファイル内の削除された行の数。 |
drop_table_deleted_row_count | bigint | ドロップ テーブルの影響を受けるデータ ファイル内の行数。 state 列が 1.に等しい場合にデータ ファイルに適用されます。 削除されたテーブルから削除された行数を表示します。 drop_table_deleted_row_count統計は、削除されたテーブルからの行のメモリ ガベージ コレクションが完了し、チェックポイントが取得された後にコンパイルされます。 削除テーブルの統計がこの列に反映される前に SQL Server を再起動すると、復旧の一環として統計が更新されます。 復旧プロセスでは、削除されたテーブルから行が読み込まれません。 削除されたテーブルに関する統計情報は、読み込みフェーズ中にコンパイルされ、復旧が完了するとこの列で報告されます。 |
州 | int | 0 - 事前作成済み 1 - 建設中 2 - ACTIVE 3 - マージ ターゲット 4 - マージされたソース 5 - バックアップ/HA に必要 6 - TOMBSTONE への移行中 7 - TOMBSTONE |
state_desc | nvarchar(60) | PRECREATED - チェックポイント ファイル ペア (CFP) とも呼ばれる少数のデータ とデルタ ファイルのペアは、トランザクションの実行中に新しいファイルを割り当てる待機を最小限に抑えるか、または排除するために事前割り当て済みで保持されます。 データ ファイル サイズは 128 MB、差分ファイル サイズは 8 MB で作成されますが、データは含んでいません。 CFP の数は、8 を最小として、論理プロセッサまたはスケジューラの数に応じて計算されます (コアにつき 1 個で、最大値なし)。 これは、メモリ最適化テーブルのあるデータベースにおける固定のストレージ オーバーヘッドです。 UNDER CONSTRUCTION - 最後のチェックポイント以降に新しく挿入され、削除された可能性のあるデータ行を格納する CFP のセット。 ACTIVE - この中には、閉じられた前のチェックポイント以降に挿入された行と削除された行が含まれます。 これらの CFP には、データベースの再起動時に、トランザクション ログのアクティブな部分を適用する前に必要とされる、必須である挿入された行と削除された行すべてが含まれます。 これらの CFP のサイズは、マージ操作がトランザクション ワークロードで最新であると仮定すると、メモリ最適化テーブルのメモリ内サイズの約 2 倍になります。 MERGE TARGET - CFP は、マージ ポリシーによって識別された CFP の統合データ行を格納します。 マージがインストールされると、MERGE TARGET は ACTIVE 状態に遷移します。 MERGEED SOURCE - マージ操作がインストールされると、ソース CFP は MERGEED SOURCE としてマークされます。 マージ ポリシー エバリュエーターは複数のマージを識別できますが、CFP は 1 つのマージ操作にのみ参加できます。 バックアップ/HA に必須 - マージがインストールされ、MERGE TARGET CFP が永続的チェックポイントの一部になると、マージ ソース CFP はこの状態に遷移します。 この状態にある CFP は、メモリ最適化されたテーブルを持つデータベースを正しく運用するうえで必要とされます。 たとえば、永続的なチェックポイントから復旧して、時間をさかのぼって戻る場合などです。 ログの切り捨てポイントが CFP のトランザクション範囲を超えた位置に移動すれば、その CFP をガベージ コレクションの対象としてマークできます。 TOMBSTONE への移行 - これらの CFP はインメモリ OLTP エンジンでは必要なく、ガベージ コレクションを行うことができます。 この状態は、これらの CFP がバックグラウンド スレッドが次の状態 (TOMBSTONE) に遷移するのを待機していることを示します。 TOMBSTONE - これらの CFP は、ファイルストリーム ガベージ コレクターによってガベージ コレクションされるのを待機しています。 (sp_filestream_force_garbage_collection (Transact-SQL)) |
lower_bound_tsn | bigint | ファイルに含まれるトランザクションの下限。 NULL 状態列が 2、3、または 4 以外の場合。 |
upper_bound_tsn | bigint | ファイルに含まれるトランザクションの上限。 NULL 状態列が 2、3、または 4 以外の場合。 |
last_backup_page_count | int | 最後のバックアップで決定される論理ページ数。 状態列が 2、3、4、または 5 に設定されている場合に適用されます。 NULL ページ数が不明な場合は 。 |
delta_watermark_tsn | int | このデルタ ファイルに書き込んだ最後のチェックポイントのトランザクション。 これはデルタ ファイルの透かしです。 |
last_checkpoint_recovery_lsn | nvarchar(23) | 引き続きファイルを必要としている前回のチェックポイントの復旧ログ シーケンス番号。 |
tombstone_operation_lsn | nvarchar(23) | tombstone_operation_lsn が、ログの切り捨てに関するログ シーケンス番号より少ない場合は、このファイルは削除されます。 |
logical_deletion_log_block_id | bigint | 状態 5 にのみ適用されます。 |
アクセス許可
データベースに対する VIEW DATABASE STATE
権限が必要です。
SQL Server 2022 以降でのアクセス許可
データベースに対する VIEW DATABASE PERFORMANCE STATE アクセス許可が必要です。
使用例
インメモリ OLTP で使用されるストレージの合計は、次のように見積もることができます。
-- total storage used by In-Memory OLTP
SELECT SUM (file_size_in_bytes)/(1024*1024) as file_size_in_MB
FROM sys.dm_db_xtp_checkpoint_files;
状態とファイルの種類別のストレージ使用率の内訳を表示するには、次のクエリを実行します。
SELECT state_desc
, file_type_desc
, COUNT(*) AS [count]
, SUM(file_size_in_bytes) / 1024 / 1024 AS [on-disk size MB]
FROM sys.dm_db_xtp_checkpoint_files
GROUP BY state, state_desc, file_type, file_type_desc
ORDER BY state, file_type;