「トランザクションの3つの方式」にて キューイング方式では、トランザクションの最後で1回しか実際の変更を試みません。失敗か成功かは楽観的並行性制御により判断すればいいでしょう。 と書きました。楽観的並行性制御とは、複数の並行プロセスからの変更要求を処理する方式のひとつです。簡単軽量な点がメリットです。楽観的ロックと呼ばれることもありますが、実際にロックすることはありません。 データベースのひとつのレコードを取得してそれを変更する状況で考えます。前提として、レコードの変更を検出するための値が必要です。例えば、レコードの最終変更時刻、変更ごとにインクリメントされるリビジョン番号、あるいはデータ内容に関するダイジェスト値などです。データの変更に伴って変わる値なら何でもかまいません。以下の説明では、変更検出にリビジョン番号を使うとします。 下の絵で、左がデータベースサーバー、右がクライアントです。
![楽観的並行性制御 - 檜山正幸のキマイラ飼育記 (はてなBlog)](https://cdn-ak-scissors.b.st-hatena.com/image/square/8dde2806f299f813fb4f6ece15b945266204f322/height=288;version=1;width=512/http%3A%2F%2Fwww.chimaira.org%2Fimg3%2Fopti-ctrl-ok.gif)