SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

直近開催のイベントはこちら!

EnterpriseZine Day 2022

2022年6月28日(火)13:10

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けの講座「EnterpriseZine Academy」や、すべてのITパーソンに向けた「新エバンジェリスト養成講座」などの講座を企画しています。EnterpriseZine編集部ならではの切り口・企画・講師セレクトで、明日を担うIT人材の育成をミッションに展開しております。

お申し込み受付中!

現場からお届けするSQL Server 2019最新情報コラム

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

 これまでの連載で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. 「論理復帰」操作はバックグラウンドで処理され、中止されたトランザクションによって実行されたすべての更新を破棄してデータの一貫性を保ちます。

次のページ
高速データベース復旧の動作

この記事は参考になりましたか?

  • Facebook
  • Twitter
  • Pocket
  • note
現場からお届けするSQL Server 2019最新情報コラム連載記事一覧

もっと読む

この記事の著者

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/12746 2020/02/28 12:00

Job Board

PR

おすすめ

アクセスランキング

アクセスランキング

イベント

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

2022年6月28日(火)13:10

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング