適用対象: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) 以降
次の表では、sys.dm_db_xtp_checkpoint_files以降のの列について説明します。
SQL Server 2014 (12.x)
次の表では、sys.dm_db_xtp_checkpoint_filesのの列について説明します。
| 列名 | タイプ | 説明 |
|---|---|---|
| container_id | int | データまたはデルタ ファイルの一部であるコンテナーの ID ( sys.database_filesで FILESTREAM 型のファイルとして表されます)。
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 - アクティブ 3 - マージ ターゲット 4 - マージされたソース 5 - バックアップ/HA に必要 6 - TOMBSTONE への移行中 7 - 墓石 |
| 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;