メモリ最適化テーブルが含まれるデータベースのバックアップ

適用対象:SQL Server

メモリ最適化されたテーブルは、通常のデータベースのバックアップの一部としてバックアップされます。 ディスク ベース テーブルについては、ストレージの破損を検出するために、データベース バックアップの一部としてデータのチェックサムおよびデルタ ファイルのペアが検証されます。

注意

バックアップ中にメモリ最適化ファイル グループ内の 1 つ以上のファイルでチェックサム エラーが検出された場合、バックアップ操作は失敗します。 このような場合は、最新の既知の良好なバックアップからデータベースを復元する必要があります。

バックアップがない場合、データベースを削除して再作成した後に、メモリ最適化テーブルおよびディスク ベース テーブルからデータをエクスポートして再読み込みできます。

1 つ以上のメモリ最適化されたテーブルを持つデータベースの完全バックアップには、メモリ最適化されたテーブルごとに、ディスク ベース テーブルに対して割り当てられているストレージ (存在する場合)、アクティブなトランザクション ログ、およびデータ ファイルとデルタ ファイルのペア (チェックポイント ファイル ペアとも呼びます) が含まれています。 ただし、「 メモリ最適化テーブルの持続性」で説明されているように、メモリ最適化されたテーブルで使用されるストレージはメモリ内にあるときのサイズを大きく上回ることがあり、データベースのバックアップのサイズに影響します。

データベースの完全バックアップ

この説明では、持続性のあるメモリ最適化テーブルを持つデータベースに関するデータベース バックアップのみに注目します。ディスク ベース テーブルに関するバックアップも同じであるためです。 メモリ最適化されたファイル グループ内にあるチェックポイント ファイル ペアは、さまざまな状態をとることがあります。 ファイルのどの部分がバックアップされるかを次の表で説明します。

チェックポイント ファイル ペアの状態 バックアップ
PRECREATED ファイルのメタデータのみ
UNDER CONSTRUCTION ファイルのメタデータのみ
アクティブ ファイルのメタデータと使用されているバイト
MERGE TARGET ファイルのメタデータのみ
WAITING FOR LOG TRUNCATION ファイルのメタデータと使用されているバイト

チェックポイント ファイル ペアの状態の詳細については、「sys.dm_db_xtp_checkpoint_files (Transact-SQL)」とその state_desc 列に関する説明を参照してください。

1 つ以上のメモリ最適化されたテーブルを持つデータベースのバックアップのサイズは、通常はメモリ内にあるときのサイズより大きく、ディスク上ストレージに保存されているときのサイズより小さくなります。 サイズがどれだけ大きくなるかは、特に、削除された行の数に依存します。

データベースの完全バックアップの推計サイズ

重要

BackupSizeInBytes 値を使用してインメモリ OLTP のバックアップのサイズを見積もることはお勧めしません。

最初のワークロードのシナリオは、(ほとんどが) 挿入の場合です。 このシナリオでは、ほとんどのデータ ファイルは Active 状態で、完全読み込みであり、削除済みの行はごくわずかです。 データベースのバックアップのサイズは、メモリ内にあるデータのサイズに近くなります。

2 番目のワークロードのシナリオは、挿入、削除、および更新操作が頻繁に実行される場合です。 最悪のケースでは、削除された行を考慮に入れた後、各チェックポイント ファイル ペアは 50% が読み込み済みになります。 データベースのバックアップのサイズは、メモリ内にあるデータのサイズの少なくとも 2 倍になります。

メモリ最適化テーブルを含むデータベースの差分バックアップ

メモリ最適化テーブルのストレージは、「 メモリ最適化テーブルの持続性」で説明しているようにデータ ファイルとデルタ ファイルで構成されます。 メモリ最適化テーブルが含まれるデータベースの差分バックアップには、次のデータが含まれています。

  • ディスク ベース テーブルを格納するファイル グループの差分バックアップは、メモリ最適化テーブルの存在による影響を受けません。

  • アクティブなトランザクション ログは、データベースの完全バックアップの場合と同じです。

  • メモリ最適化データ ファイル グループの差分バックアップでは、データベースの完全バックアップと同じアルゴリズムを使用して、バックアップのデータ ファイルとデルタ ファイルを識別しますが、その後、次のようにファイルのサブセットを除外します。

    • データ ファイルには新たに挿入された行が含まれ、ファイルがいっぱいになるとファイルが閉じられ、読み取り専用としてマークされます。 データ ファイルは、最後のデータベースの完全バックアップの後で閉じられた場合にのみバックアップされます。 差分バックアップでは、前回のデータベースの完全バックアップ以降に挿入された行を含むデータ ファイルのみがバックアップされます。 ただし、挿入された行の一部が既にガベージ コレクションの対象としてマーク済みであったり既にガベージ コレクションによって処理済みであったりする可能性がある、更新および削除シナリオは例外です。

    • デルタ ファイルには、削除されたデータ行への参照が格納されます。 将来のトランザクションでは行を削除できるため、デルタ ファイルは存続期間中のいつでも変更することができ、閉じられません。 デルタ ファイルは常にバックアップされます。 通常、デルタ ファイルはストレージの 10% 未満を使用するため、差分バックアップのサイズにほとんど影響を与えません。

データベース サイズの大部分がメモリ最適化テーブルである場合は、差分バックアップによってデータベース バックアップのサイズを大幅に削減することができます。 一般的な OLTP ワークロードの場合、差分バックアップは完全バックアップより非常に小さくなります。

参照

メモリ最適化テーブルのバックアップ、復元、復旧