EnterpriseZine(エンタープライズジン)

EnterpriseZine(エンタープライズジン)

テーマ別に探す

高速データベース復旧(ADR: Accelerated Database Recovery)後編

edited by DB Online   2020/02/28 12:00

 これまでの連載で2回にわたってSQL Serverのデータベース復旧処理に関する課題や、課題を打開するための高速データベース復旧の概念について紹介してきました。今回の記事では、いよいよ高速データベース復旧の動作を詳しく確認します。

論理復帰

 高速データベース復旧ではPVS【注1】を活用して、データの一貫性を保証したアクセスを実現しています。その動作は「論理復帰」と呼ばれます。従来のトランザクションログをもとにしたデータベース復旧との違いを理解する上で、「論理復帰」の詳細な流れを把握することはとても重要です。「論理復帰」操作では次のような流れで、一貫性を保証したデータアクセスが行われます。

  1. データベース内のデータが更新されると、更新前データはデータを生成したトランザクションIDと関連付けられたうえでPVSに移動されます。
  2. クライアントからのクエリによるデータアクセスが行われる際には、まずトランザクションIDに基づいて最新バージョンのデータを生成したトランザクションの状態(アクティブ、コミット、または中止)をチェックし、どのバージョンを使用すべきかを判断します。
  3. トランザクションがアクティブであるかコミットされている場合、クライアントがアクセスすべきデータはクエリ分離レベルに依存します(たとえばアクティブの場合、Read Uncommitted分離レベルと、それ以外ではアクセスすべきデータが異なりますよね)。
  4. トランザクションが中止された場合、関連付けられたバージョンのデータが使用されることはありません。PVS内のデータのバージョンのつながりを確認し、コミットされたデータを探し出して使用します。
図1(クリックすると拡大)

 この「論理復帰」操作によって、中止されたトランザクションが存在しても一貫したデータアクセスが可能となっています。ただし、コミットされたデータを取得するために複数のバージョンの状態を確認する可能性があるため、パフォーマンスの観点からはオーバ―ヘッドとなることに留意する必要があります。

【注1】PVS(Persistent Version Store):永続バージョンストア。詳細は前回記事を参照してください。

論理復元

 これまでも繰り返し紹介してきましたが、高速データベース復旧の最も重要な動作は、トランザクションログを逐次適用せずにUNDOを実現し、大幅な復旧時間短縮を可能にする点です。その操作は「論理復元」(先述の「論理復帰」と類似していてややこしいのですが……)と呼ばれ、次のようなステップで実行されます。

  1. 中止されたトランザクションによって行われた更新操作を無効化します。そしてPVS内のコミットされたバージョンの行を、データベース内のデータページに戻すことによってデータの一貫性を保持します。この操作の後、PVS内のデータは不要になりクリーンアップ対象として削除されます。
  2. PVSの行をデータページへ戻す際に、中止されたバージョンとコミットされたバージョンのデータの状態を比較し、必要な補正操作(挿入、更新、または削除)を実行して、行をコミット時の状態に復元します。この補正操作によって実行される行の復元操作は行バージョンによる管理ではなく、通常のトランザクションログを使用して更新操作が管理されます。
    その理由は、論理復元によって実行されるデータ復元操作では、かならず一度に1行分のデータだけが復元されることに起因します。一連の操作は、(1行だけの復元なので) 非常に短時間で完了することが保証されているため、トランザクションログを使用した更新を行ってもデータベースの復旧時間に影響を与えることはありません。
  3. 「論理復帰」操作はバックグラウンドで処理され、中止されたトランザクションによって実行されたすべての更新を破棄してデータの一貫性を保ちます。

※この続きは、会員の方のみお読みいただけます(登録無料)。


※この続きは、会員の方のみお読みいただけます(登録無料)。


著者プロフィール

  • 平山理(ヒラヤマオサム)

    日本マイクロソフト株式会社 プレミアフィールドエンジニアリング プレミアフィールドエンジニア 日本マイクロソフトの Premier Field Engineering 部で、お客様に SQL Server をスムーズにお使いいただくための様々なお手伝いをしています。Sybase (現 SAP) 勤務時代の 5 年間とマイクロソフトでの 12 年間、データベース道を極めるために精進する毎日です。 二人の娘の父親であり、ハードロックを好む「バッタもん」ギタリストであり、毎月 300 km くらい走る (わりと) シリアス ランナーでもあります。著書に「絵で見てわかる SQL Server の内部構造」(翔泳社)

バックナンバー

連載:現場からお届けするSQL Server 2019最新情報コラム
All contents copyright © 2007-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5