質問: 調べてみると、 「更新前のデータを用いることにより、トランザクションの同時実行を可能にする方法」と出ました。 つまるところ、例えば、 Aさんが口座X(残高1万円)に1万円振り込みをしているときに、 Bさんが口座Xのデータを読みだしたとして、 Aさんには2万円と表示され、 Bさんには1万円と表示されるということでしょうか? この場合、Aさん、Bさんともに引き出し操作を行うと大変なことになると思います。 引き出し処理の場合は、排他ロックになるのでしょうか? ご存知の方がいらっしゃいましたら、ご教示の程お願いいたします。
回答: 以上の理解で、ほぼ間違いありません。 Aさんがトランザクションを進めている間、Bさんが「読み取りだけ」であれば、Aさんのトランザクション開始前のデータが見えている、ということになります。 書き込みを行おうとした場合や,`SELECT FOR UPDATE`で書き込み前提の値取得をかけた場合にはロックが発生して、進行中のトランザクションが済むまで待つ、ということになります。