09/05/26 23:04:30
>>192
それはアプリケーション制御の話。つまりただの仕様であり運用方法。
通常楽観的ロックや悲観的ロックというのはDBアクセスで読み込み中心ならば
ロックをかけないようにしよう、後から来たほうはトランザクションをリトライさせればいいんじゃね?
というお話だからミリ秒単位のお話。
だからリトライ制御等がはいってないのは楽観的ロックですらなく、書き込みもそれなりにあるのならば
普通に悲観的ロックをかけたほうが良い。
よくあるATMでの振込みと引落の同時アクセスを考えてみると良い。
ただ、読み込みでロックかけるようなDBなら楽観的ロックのほうが有利にはなりやすい可能性あり。
楽観的ロックというのはデータベースのロックを積極的に利用しようという話ではないので
開発者側に負担を強いる方法。楽観的であれ短い時間だろうが更新時にはどうせロックかけるので
実はアクセス順序を意識しないとデッドロックの可能性が普段から意識する悲観的ロックより
大幅に増える。IF文等によりアクセスするテーブルや行が変わる可能性があるからね。