【デスペ8問】隔離水準(データベーススペシャリスト)
このNoteには「隔離水準(ISOLATION LEVEL)」について、まとめました。
隔離水準は、WALと同じでデスペで新たに学ぶべき新知識です。
4つの隔離水準と3つの異常で、計7つ覚えねばなりません。午後問題でもできることがあるので、しっかり覚えてください。午後で知識問題で失点はできません。
デスペのAMIIはざっくり5年分解けば、全パターンが把握できます。
私が合格した時に、学習ノートにジャンル毎に問題をまとめました。このNoteの解説は、学習ノートと、私のIT専門学校での授業内容を基にしています。
それでは始めましょう!
トランザクション同時実行による異常と隔離水準
トランザクションの同時実行において、3つの異常が発生します。
ダーティリード:他のトランザクションが更新したがコミットしていない更新値を読み込んだが、他トランザクションがロールバックして更新前の値になり、読み込んだ値と違いが出てしまった。
ノンリピータブルリード:トランザクション処理中に同じデータを読み込んだが、前回と違う値が読み込まれてしまった。処理中に別トランザクションによって変更が行われたため。
ファントムリード:トランザクション処理中に同じデータを読み込んだとき、前回は存在しなかった行が読み込まれた。処理中に別トランザウションによって追加が行われてたため。
隔離性水準とは、トランザクションの同時実行による異常を防ぐ水準です。
READ UNCOMMITTED:3種類全ての異常が発生します。
READ COMMITTED:ダーティリードを防ぎます。
REPEATABLE READ:ダーティリード、ノンリピータブルリードを防ぐ
SERIALIZABLE:3種類全ての異常を防ぐ。
*作図かなhttps://www.db-siken.com/kakomon/24_haru/am2_15.html
問題演習1 | 基本的な問題
正答はウ。
READ COMMITTEDでは、ダーティリードだけ防げます。
正答はア。
(1)より、イが消えます。
(2)は、ノンリピータブルリードが発生すること。よって、アのREAD COMMITTEDです。
正答はエ。
他のトランザクションとの影響を完全に防ぐには、エのSERIALIZABLEの水準しかありません。
正答はイ。
イ:ダーティリード:他トランザクションによるロールバックが原因
ウ:ファントムリード:他トランザクションによる挿入が原因
エ:ノンリピータブルリード:他トランザクションの更新が原因
正答はエ。
ダーティリードは、他トランザクションの更新がロールバックによって、前回読み込んだ更新値が、元の値に戻るので不整合が起こることです。
ア:ファントムリード
イ:ノンリピータブルリード
ウ:デッドロックの発生は、隔離水準とは関係ありません。
エ:ダーティロード
正答はウ。
ノンリピータブルリードを防ぐのは、高い2つの水準です。うち一番低いのはウ「REPEATABLE READ」。
問題演習2 | 少し難しい問題
正答はエ。
データベースにおける「登録」とは新しいデータ(行)の挿入です。
よってT1の処理中に、T2が挿入(②③)することで、T1④でT1①では読み込まれなかった新たな行を読み込んでいるので、ファントムリード。
隔離水準はREAD UNCOMMITTEDなので、どの障害も防げません。
正答はエ。
不整合なデータの読み込み減らすには、隔離水準を高めます。同時実行による障害を防ぐので、同時実行を待たせることが多くなります。
同時実行できる頻度が減るので、一定時間当たりに実行できるトランザクション数も減ります。
まとめ
お疲れ様でした!
どんぱんがーんとまとめます。
異常現象は以下の通り。
ダーティリード:他のトランザクションが更新したがコミットしていない更新値を読み込んだが、他トランザクションがロールバックして更新前の値になり、読み込んだ値と違いが出てしまった。
ノンリピータブルリード:トランザクション処理中に同じデータを読み込んだが、前回と違う値が読み込まれてしまった。処理中に別トランザクションによって変更が行われたため。
ファントムリード:トランザクション処理中に同じデータを読み込んだとき、前回は存在しなかった行が読み込まれた。処理中に別トランザウションによって追加が行われてたため。
原因もイメージできておくと良いですね。
イ:ダーティリード:他トランザクションによるロールバックが原因
ウ:ファントムリード:他トランザクションによる挿入が原因
エ:ノンリピータブルリード:他トランザクションの更新が原因
現象と原因のどちらかを知っておくだけで違います。私は原因の方を覚えて、どんな現象が起こるかを考えるようにしています。
私が合格してきた勉強法についてもNoteにしました。
まずは書籍の読み倒し方、AMIIの勉強だけでも参考にして頂ければ、嬉しいです。
p.s. 普段は >> 専門学校とIT就職のブログ << をやってます。
でわでわ(・ω・▼)ノシ