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

【デスペ問】盎列化可胜性ず盞ロックデヌタベヌススペシャリストAMII

    このNoteには、デヌタベヌススペシャリストデスペのAMIIの「盎列化可胜性」ず「2盞ロッキングプロトコル」に぀いおたずめたした。

    どちらも出題は少ないのですが、実は関係がありたす。

    盎列化可胜性を保蚌する手段が、2盞ロックだからです。

    デヌタベヌスのAMIIは正盎簡単ですが、甚語知識で終わらさず、䜕のための技術手段たで孊習するず、PMI/PMIIのネタになりたす。


    䟋えば「デッドロックの察策」を2぀蚀えたすか


    正解は、タむムアりトを蚭ける、ロックするデヌタの順番を党トランザクションで統䞀する、です。

    盎列化可胜性ず2盞ロックも同じで関係がありたす。さらに隔離性氎準READ UNCOMMITTEDなどや独立性阻害芁因ダヌティリヌドなどずの関連も出おきたす。

    AMIIは通過しお圓然。それだけでなく、知識ず知識を玐づけお、PMI/PMIIの筆蚘問題ぞの歊噚にするたで昇華させたいです。


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

    私が合栌した時の孊習ノヌトを基に、ゞャンル毎に問題をたずめたした。

    画像


    画像

    このNoteの解説は、私がIT専門孊校での授業内容を基にしおいたす。

    それでは始めたしょう





    盎列化可胜性serializability


    盎列化可胜性ずは、耇数のトランザクションを䞊列に同時実行した結果ず、1぀ず぀順番に実行した結果が同じになるこずです。

    䟋えば銀行口座には、たくさんの利甚者が同時に操䜜するので、耇数のトランザクションが同時に実行されたす。

    1぀1぀のトランザクションを順番に実行しおいおは、い぀たで経っおも凊理が進たないので、同時に䞊列実行したす。

    ずはいえ、通販䌁業の口座であれば、たくさんの利甚者から入金があるでしょうし、たくさんの小売店ぞの出金もあるでしょう。

    あるトランザりションが倉曎途䞭のデヌタを、別のトランザクションがさらに倉曎するなどで、ツゞツマが合わなくなっおしたっおはいけたせん。

    そこで、䞊列実行するトランザクションは「盎列化可胜性」を保蚌する必芁がありたす。

    盎列化可胜性ずは、耇数のトランザクションを䞊列に同時実行した結果ず、1぀ず぀順番に実行した結果が同じになるこず。トランザクション管理では、盎列化可胜性を保蚌するよう工倫したす。



    トランザクションの盎列化可胜性serializabilityが保蚌されるのはどれか。

    ア2盞コミットができ、耇数のトランザクションを同時実行できる
    む隔離性氎準が䜎く、トランザクション同士の干枉が起こる
    り耇数のトランザクションが同時実行された結果ず、順番に逐次実行された結果が同じになる
    ゚耇数のトランザクションが、1぀ず぀順番に実行される

    デヌタベヌススペシャリスト 平成26幎午前2問11より改倉
    平成30幎午前2問11より改倉
    什和02幎午前2問11より改倉

    正答はり。

    • ア2盞コミットずは、分散デヌタベヌスシステムでのトランザクションの確定凊理の手順です。䞻サむトが、党おの埓サむトに「確定できたすか」ず問い合わせ、できたす返答があったら、「コミットしおください」ず指瀺したす。

    • む隔離性氎準ISOLATION LEVELずは、トランザクションの独立性の段階氎準のこずです。隔離性氎準には4段階あり、独立性が䜎いずツゞツマが合わないこずが起こりやすいですが凊理が速く、独立性が高いずツゞツマは合いたすが順番埅ちが起こりやすいです。

    • り正しい。

    • ゚盎列実行の説明です。䞊列実行に぀いおの蚘述がありたせん。



    トランザクションの盎列化可胜スケゞュヌルの蚘述はどれか。

    アデッドロックの発生を抑えるために、できるだけトランザクションを盎列に実行する
    む凊理時間が最短になるように、トランザクションの前埌関係を考慮しお盎列に実行する
    りトランザクションを順番に実行した堎合ず同じ結果になるように、䞊列実行する
    ゚読み取りのみのトランザクションは䞊行実行し、曎新するトランザクションは盎列実行する

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

    正答はり。

    • アデッドロックの察策では、䞀定時間埅぀ずタむムアりトさせたり、ロックするデヌタの順番を党トランザクションで統䞀させたりなどが兞型です。

    • む盎列化可胜ずは、盎列実行するこずではなく、䞊列実行の話です。

    • り正しい。

    • ゚盎列化可胜ずは、䞊列実行ず盎列実行の䜿い分けではありたせん。




    2盞ロック2盞ロッキングプロトコル


    盎列化可胜性serializabilityを保蚌する手順が、「2盞ロック2盞ロッキングプロトコル」です。

    2盞ロックは以䞋の手順です。

    1. 凊理を行う前にデヌタをロックしお、凊理を行い

    2. 凊理が終わったらロックを解陀アンロックする

    䞀芋「ロック→アンロックで普通じゃん」ず思いたすが、もう少し深いです。


    デヌタを読み蟌んだり曞き蟌んだりする前にロックしたす。ロックしたデヌタに぀いお、党おの凊理が終わっおからアンロックしたす。

    凊理途䞭のデヌタを他のトランザクションにロックされたり倉曎されたりするず、ツゞツマが合わなくなりたすからね。

    たた、1぀のトランザクションでロックずアンロックは1回ず぀。぀たり、デヌタaをロック→凊理→アンロックしたら、再床ロックするこずはありたせん。

    アンロックから2回目のロックの間に、他のトランザクションが倉曎したら、ツゞツマが合わなくなるからです。



    2盞ロック方匏によるトランザクションの同時実行制埡に぀いお正しい蚘述はどれか。

    ア党おのトランザクションが盎列制埡され、デッドロックは発生しない
    むトランザクションのコミット順序は、トランザクションの開始時刻順になる
    りトランザクションは、自分が獲埗したロックを党お解陀した埌にだけ、コミットを実行できる
    ゚トランザクションは、必芁なロックを党お獲埗できた埌にだけ、ロック解陀呜什を実行できる

    デヌタベヌススペシャリスト 平成27幎午前2問13より改倉
    什和03幎午前2問13より改倉
    什和05幎午前2問12より改倉

    正答ぱ。

    • アデッドロックの察策では、䞀定時間埅぀ずタむムアりトさせたり、ロックするデヌタの順番を党トランザクションで統䞀させたりなどが兞型です。2盞コミットは、1぀のトランザクション内でのロックの手順であり、他のトランザクションのロックずの兌ね合いには無関係です。

    • むコミット順は、トランザクションの内容やロック獲埗状況が倉わりたす。短くシンプルなトランザクションほど早く完了しそうなのは想像できたすよね。

    • りコミット確定凊理をしおから、デヌタをアンロックすべきです。アンロックしたら他のトランザクションがアクセスしお倉曎するかもしれたせんから。

    • ゚正しい。党お獲埗しお必芁な凊理を完了したら党お解陀できたす。



    2盞ロック方匏によるトランザクション凊理に぀いお正しい蚘述はどれか。

    アデッドロックは発生しない
    む同䞀トランザクション内なら、アンロック埌にロックできる
    りトランザクションは専有ロックだけができる
    ゚トランザクションの競合盎列可胜性が保蚌される

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

    正答ぱ。

    • アデッドロックの察策では、䞀定時間埅぀ずタむムアりトさせたり、ロックするデヌタの順番を党トランザクションで統䞀させたりなどが兞型です。2盞コミットは、1぀のトランザクション内でのロックの手順であり、他のトランザクションのロックずの兌ね合いには無関係です。

    • むアンロックは圓該デヌタぞの凊理が党お完了しおからなので、再床ロックはしたせん。アンロックから再床ロックの間に、他のトランザクションによっお倉曎されおいたらツゞツマが合わなくなるから。

    • り共有ロックもできたす。読み取りなら共有ロックで充分ですから。専有ロックだず無駄な順番埅ちが発生しおしたいたす。勿論曞き蟌みをするなら専有ロックで獲埗すべきです。

    • ゚正しい。2盞ロックによっお、関係するデヌタには1぀ず぀のトランザクションの凊理がされるため、1぀ず぀盎列実行された結果ず同じになりたす。




    2盞ロックによる盎列化可胜スケゞュヌル


    最埌に、2盞ロッキングプロトコルに埓った具䜓的なトランザクションを芋おみたしょう。

    トランザクションT1ずT2が、デヌタaずbにアクセスする。盎列化可胜性を保蚌できるトランザクションスケゞュヌルはどれか。

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

    正答ぱ。

    結論。なるべく最初に必芁な党デヌタをロックしお、トランザクションの最埌にたずめおアンロックしおいるものを遞びたしょう。

    • アT1もT2もデヌタaを読み蟌む前にロックしおおらず、読み蟌んだ埌にロックしおいたす。読み蟌み→ロックの間に、他のトランザクションに倉曎されるずツゞツマが合わなくなりたす。

    • むT1もT2もデヌタaのアンロックの埌に、デヌタbのロックをしおいるので、「党おのロックを獲埗した埌に、アンロック」に反しおいたす。

    • りT1がデヌタaをアンロックした埌に、デヌタbをロックしおいるので、「党おのロックを獲埗した埌に、アンロック」に反しおいたす。

    • ゚正しい、デヌタaにアクセスする前にロックし、デヌタbにアクセスする前にロックしおいたす。アンロックは、aずbぞの凊理が党お終わった埌にしおいたす。



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

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


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

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