DBMSの多版同時実行制御(MVCC)に関する記述として、適切なものはどれか。
ア | 同時実行される二つのトランザクションのうち、先発のトランザクションがデータを更新し、コミットする前に、後発のトランザクションが同じデータを参照すると、更新前の値を返す。 |
イ | トランザクションがデータを更新する前に専有ロックを、参照する前に共有ロックを掛け、コミットかロールバック後にアンロックする。 |
ウ | トランザクションがデータを更新する前に専有ロックを、参照する前に共有ロックを掛け、専有ロックはコミットかロールバック後までアンロックしないが、共有ロックは不必要になったらアンロックする。 |
エ | トランザクションがデータを更新する前にロックを掛けず、コミット直前に他のトランザクションがそのデータを更新したかどうか確認し、更新していないときだけコミットする。 |
答え ア
【解説】
複数のトランザクションがDBMSに同時にアクセスする場合、これまでのデータベースではロック(専有ロック、共有ロック)機構を使用していましたが、ロック機構ではロック解除を待つことにより処理時間の増大やデッドロックによる障害などの問題がありました。
それに対し、多版同時実行制御(MVCC)はデータベースへの問い合わせ実行の際、各トランザクションは処理の基礎となっているデータの現在の状態に拘らず、遡ったある時点におけるスナップショットを参照します。
すなわち、同時実行される二つのトランザクションのうち、先発のトランザクションがデータを更新し、コミットする前に、後発のトランザクションが同じデータを参照すると、更新前の値を返します。(ア)
【キーワード】
・多版同時実行制御