Shoeisha Technology Media

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

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

テーマ別に探す

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

edited by DB Online   2020/02/10 08:00

トランザクションログに記録される更新操作の分類による復旧処理の最適化

 従来はひとまとまりで片付けられていた、トランザクションログに記録される様々な更新操作を次のように分類しました。そして、それぞれの操作を新たな手段で実現するための実装を行いました。

データの変更操作

 もっとも大きな実装の変更は、データベース内のデータ更新操作に対して実施されました。高速データベース復旧では、トランザクションログをもとにした個別のREDO/UNDOの実施を廃止して、バージョンストアの情報を元に操作します。

 バージョンストア内の各データは、そのデータを生成したトランザクションIDを保持しているので、そのトランザクションの実行状態を識別することができます(コミット済み、中止、あるいは現在もアクティブなど)。トランザクションが中止されると、関連するデータ(バージョンストア内でそのトランザクションIDを保持しているデータ)は後続のトランザクションから無視され、それ以前にコミットされたデータがアクセスされるようになります(図1)。

図1
図1

 データベース復旧処理中の分析フェーズにおいて、対象となるすべてのトランザクションの状態を識別します。REDOフェーズでは、最後のコミットされたトランザクションIDをもとにデータがロールフォワードされます。UNDOフェーズでは、コミットされていないすべてのトランザクションの状態が中止と設定されます。この操作によって、これらのトランザクションIDと関連するすべてのデータにアクセスできなくなります。

 この動作変更によって、個別のトランザクションの変更操作をひとつずつ実行していた従来の方式と比較すると飛躍的に処理時間が短縮され、さらに大量のトランザクションへの対応が必要な場合であっても一定時間内に処理が完了できるようになりました。

システム操作

 次のようなデータベースの内部構造を維持するための操作は、必要となる処理内容の複雑さからバージョン管理が不可能です。

 従来の復旧処理の方式では、これらがユーザートランザクション処理内で、ユーザーデータの変更と関連付けられ、その処理の多くの割合を占めることがあります(例:大量データのインポート処理による多くのページ割り当て、など)。

 高速データベース復旧ではこれらの処理はユーザートランザクションとは分離され、内部データ構造を更新してすぐにコミットを行う、非常に短いシステムトランザクションとして実施されます。ロールバックが必要な場合も、ユーザートランザクションの一部として処理されるのではなく、バックグラウンド処理として実行されます。

  • データベース内のデータを配置する領域(データベース内のエクステント、ページ)の割り当ておよび解除
  • インデックスを構成するBツリーのページ分割

論理的操作およびバージョンに依存しない操作

 データベース復旧時に発生する下記のような操作は、バージョン管理では実現できません。これらは、後述するSLogと呼ばれる追加のトランザクションログストリームを使用することによって実現します。

  • 論理操作:更新対象オブジェクトへのロックの取得、トランザクションのUNDO時の各種キャッシュの無効化、一括操作実行時の統計の蓄積など
  • GAM、SGAM、PFSなどのシステムメタデータの更新
  • データベースの起動に必要なシステムメタデータの更新(ブートページなどに含まれる初期化時に必要となる情報)
  • オブジェクトのスキーマ変更

著者プロフィール

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

    日本マイクロソフト株式会社 プレミアフィールドエンジニアリング プレミアフィールドエンジニア 日本マイクロソフトの 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