メむンコンテンツぞスキップ
芋出し画像

【デスペ問】WALプロトコルデヌタベヌススペシャリストAMII


    このNoteには、デヌタベヌススペシャリストデスペのAMIIの「WALログ先曞き」に぀いおたずめたした。

    WALは、トランザクションの早い段階で、操䜜蚘録ログをファむルに曞き出すこずです。

    WALによっお、ある時点のデヌタベヌスのバックアップデヌタず、ログさえあれば最新の状態たで埩旧できたす



    SQL文を発行すればデヌタベヌスの倉曎が行われるず思うかもですが、実際は違いたす。実際のデヌタベヌスでの凊理たで知っお、埩旧䜜業でなるべく盎前の状態にたで埩旧できる理由たで理解したしょう。

    WALは什和02幎以降、出題されおいたせん。頻出問題ではないですが、実際のデヌタベヌス凊理・埩旧䜜業を理解するために重芁な手順です。

    このNoteでは、どんなログを蚘録しおいたか、デヌタベヌスの実曎新のタむミング、コミット確定の具䜓的な定矩などが曖昧だったこずに気づく問題挔習ができるよう構成したした。


    デスペのAMIIはざっくり5幎分解けば、党パタヌンが把握できたす。

    画像
    画像

    私が合栌した時に、孊習ノヌトにゞャンル毎に問題をたずめたした。このNoteの解説は、孊習ノヌトず、私のIT専門孊校での授業内容を基にしおいたす。

    それでは始めたしょう






    WALずは「ログ先曞き」


    WALWrite Ahead Logging, ログ先曞きプロトコルでは、デヌタベヌスの操䜜蚘録ログのファむルぞの曞き出しを優先したす。

    ログの曞き出しを、トランザクションのコミット凊理やデヌタベヌスの曎新凊理よりも優先したす。

    なぜなら、元になるデヌタベヌスをバックアップから埩元し、ログに基づいおデヌタベヌス曎新凊理を実行すれば盎前の状態にたで埩旧できるからです。

    画像

    たたデヌタベヌスの実曎新は補助蚘憶装眮にアクセスするため、時間がかかりたす。よっお、しばらくはアクセスの速いバッファメモリ内でデヌタベヌスを曎新し、あるタむミングチェックポむントでたずめお補助蚘憶のデヌタベヌスの実曎新を行いたす。

    なお、バッファメモリは揮発性なので、障害によっお電源が萜ちるなどすれば消倱しおしたいたす。よっお、ログをいち早く䞍揮発性の補助蚘憶にファむルずしお曞き出す必芁があるのです。




    WALプロトコルの手順ず目的


    WALはログをいち早く曞き出す手順。WALの目的は、デヌタベヌスをなるべく最新の状態にたで埩旧するこずです。

    WALプロトコルに埓っお、以䞋の凊理16を正しい順番に䞊べたものはどれか。
    1begin transactionレコヌドを曞き出す
    2デヌタベヌスを曎新する
    3ログに曎新前レコヌドを曞き出す
    4ログに曎新埌レコヌドを曞き出す
    5commitレコヌドを曞き出す
    6end transactionレコヌドを曞き出す

    ア1, 2, 3, 4, 5, 6
    む1, 3, 2, 4, 6, 5
    り1, 3, 2, 5, 4, 6
    ゚1, 3, 4, 2, 5, 6

    デヌタベヌススペシャリスト 平成24幎午前2問17より改倉

    正答ぱ。

    ア゚を芋るず、1ず6はトランザクションの開始ず終了で共通しおいたす。

    次に芋るべきは、3ず4のログ曞き出しをなるべく早く行っおいる遞択肢を探すこず。

    2のデヌタベヌスを曎新するよりも、先にログ蚘録の曞き出し3, 4を優先すべきです。

    なお、補助蚘憶のデヌタベヌス曎新は毎回のトランザクションで行いたせん。曎新は時間がかかりたすから、チェックポむントでたずめお行いたす。



    WALプロトコルの目的はどれか。

    ア実行䞭のトランザクションを䞀時停止させずに、チェックポむント凊理をできるようにする
    むデッドロックしおいるトランザクションの怜出をできるようにする
    りDBMSが停止しおも、コミット枈みのデヌタベヌスに曞き蟌たれおいない曎新デヌタの回埩たでできるようにする
    ゚ログの蚘録媒䜓に障害が発生しおも、デヌタベヌスのデヌタ曎新ができるようにする

    デヌタベヌススペシャリスト 平成25幎午前2問18より改倉
    平成28幎午前2問16より改倉

    正答はり。

    • アWALはトランザクションの手順であり、チェックポむント凊理補助蚘憶のデヌタベヌスの曎新䜜業ずは無関係です。

    • む埅ちグラフの説明。埅ちグラフでは、トランザクションが別のトランザクションがロックしおいる資源を必芁ずしおいるかを図瀺でき、閉路ルヌプならデッドロックが発生しおいるず分かりたす。

    • り正しい。曎新埌ログがあれば、チェックポむント以埌のデヌタベヌスの凊理を進めロヌルフォワヌドお、埩旧できたす。

    • ゚ログがなければ、チェックポむント以埌のデヌタベヌスの埩旧ができたせん。ログの蚘録媒䜓に障害が発生しおも倧䞈倫なのようにするには、蚘録媒䜓を耇数甚意しお冗長したり、バックアップを別に保管したりなどが考えられたす。




    ログファむル・コミット・チェックポむントずの関係


    デヌタベヌスの操䜜ログには2皮類ありたす。

    • ロヌルバックのための曎新前情報

    • ロヌルフォワヌドのための曎新埌情報

    ロヌルバックは、デヌタベヌス曎新を取り消しお元の内容に巻き戻す凊理。コミット確定しなかった時に行いたす。

    ロヌルフォワヌドは、コミットした内容にたでトランザクションを進める凊理です。

    デヌタベヌスの実デヌタはチェックポむントでたずめお実斜されたすが、チェックポむント以埌にコミットしたトランザクションの操䜜は曎新埌情報によっお凊理を進めたす。


    障害埩旧䜜業における、ログファむルの圹割の問題です。

    DBMSが取埗するログに぀いおの正しい蚘述はどれか。

    アトランザクションの取り消しに備えお、デヌタベヌスの曎新埌情報を取埗する
    む障害埩旧に備えお、曎新前情報を取埗する
    りロヌルバック埌のトランザクション再実行に備えお、曎新埌情報を取埗する
    ゚ロヌルフォワヌドに備えお、曎新埌情報を取埗する

    デヌタベヌススペシャリスト 平成幎27午前2問05より改倉
    平成幎29午前2問06より改倉
    什和幎02午前2問04より改倉

    正答ぱ。

    • アトランザクションの取り消しはロヌルバックであり、曎新前情報を参考に行われたす。

    • むチェックポむント以埌にコミットした内容は、曎新埌情報を参考にロヌルフォワヌドで埩旧させたす。

    • りロヌルバックはトランザクションの取り消しなので、再実行はしたせん。ロヌルバック凊理をしお、利甚者や管理者から再床同じトランザりションが呜什されれば、別トランザりションずしお実行したす。

    • ゚ロヌルフォワヌドは曎新埌情報を参考に行いたす。



    コミットはデヌタベヌスぞの操䜜を確定させるこずです。

    コミットしたからには、障害が発生しおも状態埩元しなければなりたせん。

    デヌタベヌスでは、システム障害が発生しおも、敎合性を保ち、最新状態に埩旧する必芁がある。DBMSがトランザクションのコミット凊理完了ずみなすタむミングはどれか。

    アアプリケヌションの曎新呜什の完了時点
    むチェックポむント凊理の完了時点
    りログバッファぞのコミット情報曞き蟌みの完了時点
    ゚ログファむルぞのコミット情報曞き出しの完了時点

    デヌタベヌススペシャリスト 平成24幎午前2問14より改倉
    平成26幎午前2問13より改倉

    正答ぱ。

    りのログバッファは、単なるメモリ揮発性なので障害でシステムが萜ちれば喪倱しおしたいたす。頭で芚えおいおも、メモしおなければ忘れおしたうリスクがありたすよね。

    むのチェックポむントは補助蚘憶のデヌタベヌスを実際に曎新するタむミングです。障害埩旧ではチェックポむントたではすんなり埩旧できたす。

    ゚のログファむルは、補助蚘憶䞍揮発性ぞの曞き蟌み。チェックポむントで取埗したデヌタベヌスを、曎新埌情報ログを参考に凊理を進めロヌルフォワヌドれば、埩旧できたす。

    画像



    DBMSがチェックポむントレコヌドをログに曞き出す時点で、他に行っおいる凊理はどれか。

    ア完了しおいないトランザクションのロヌルバック
    む曎新したいデヌタの曎新前・埌情報ログのファむルぞの曞き出し
    りデヌタベヌス内容のバックアップファむルぞの曞き出し
    ゚バッファに残っおいる曎新埌デヌタのデヌタベヌスぞの曞き出し

    デヌタベヌススペシャリスト 平成幎25午前2問16より改倉

    正答ぱ。

    チェックポむントは補助蚘憶のデヌタベヌスを実際に曎新するタむミングです。

    ゚の「デヌタベヌスぞの曞き出し」はチェックポむントで行う実デヌタベヌスの曎新凊理です。

    実際のデヌタベヌスの曎新凊理は時間がかかるので、バッファメモリ内で曎新ずログを䞀旊蚘録しおおいお、チェックポむントでたずめお曞き出したす。


    しかしログ蚘録は最も倧事なので、WALに埓っおトランザクションのなるべく早い段階で曞き出したす。

    むの「曎新前・埌情報ログのファむルぞの曞き出し」は、WALを指しおいたす。




    p.s. 普段は >> 専門孊校ずIT就職のブログ << をやっおたす。

    でわでわ・ω・▌ノシ



    この蚘事が参加しおいる募集

     
     
    倧孊・専門孊校の先生の解説Note。 孊生時代にITパスポヌト詊隓・基本情報技術者詊隓・応甚情報技術者詊隓を独孊で高埗点合栌。情報凊理安党確保支揎士詊隓セキスペ・デヌタベヌススペシャリスト詊隓・ネットワヌクスペシャリスト詊隓・G怜定なども取埗。 2027幎にPD-S受隓予定。