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;