変更されたエクステントの追跡

SQL Server では、一括コピー操作によって変更されたか、または最後の完全バックアップによって変更されたエクステントを追跡するために、2 つの内部データ構造を使用します。これらのデータ構造により、差分バックアップの処理速度が大幅に向上します。また、データベースで一括ログ復旧モデルを使用している場合は、一括ログ コピー操作の速度も向上します。GAM (グローバル アロケーション マップ) ページや SGAM (共有グローバル アロケーション マップ) ページと同様に、これらの構造はビットマップで、各ビットが 1 つのエクステントを表します。

  • DCM (差分変更マップ)

    最後の BACKUP DATABASE ステートメント以降に変更されたエクステントが追跡されます。エクステントのビットが 1 の場合、そのエクステントは最後の BACKUP DATABASE ステートメント以降に変更されています。このビットが 0 の場合、エクステントは変更されていません。

    差分バックアップでは、DCM ページを読み取るだけで、変更されているエクステントを判断します。これにより、差分バックアップでスキャンしなければならないページの数が大幅に削減されます。差分バックアップを実行するときの時間の長さは、最後の BACKUP DATABASE ステートメント以降に変更されたエクステントの数に比例し、データベースの全体的なサイズには比例しません。

  • BCM (一括変更マップ)

    最後の BACKUP LOG ステートメント以降に、一括ログ記録操作によって変更されたエクステントが追跡されます。エクステントのビットが 1 の場合、そのエクステントは最後の BACKUP LOG ステートメント以降に一括ログ記録操作によって変更されています。このビットが 0 の場合、一括ログ記録操作によってエクステントは変更されていません。

    BCM ページはすべてのデータベースにありますが、データベースで一括ログ復旧モデルを使用している場合にのみ使用します。この復旧モデルでは、BACKUP LOG を実行するときにバックアップ プロセスで BCM をスキャンし、変更されたエクステントを探します。その後、これらのエクステントをログ バックアップに含めます。これにより、データベースがデータベース バックアップと、トランザクション ログ バックアップのシーケンスから復元される場合に、一括ログ記録操作を復旧できます。一括ログ記録操作はログに記録されないので、BCM ページは単純復旧モデルを使用しているデータベースには関係しません。完全復旧モデルでは一括ログ記録操作が完全にログに記録された操作として扱われるので、BCM ページは完全復旧モデルを使用するデータベースにも関係しません。

DCM ページと BCM ページ間の間隔は、GAM ページと SGAM ページの間隔と同じで 64,000 エクステントです。DCM ページと BCM ページは、物理ファイル内の GAM ページと SGAM ページの後に配置されます。

DCM (Differential Change Map) および BCM (Bulk Changed Map) ページ