- - PR -
UPDATE処理
投稿者 | 投稿内容 | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-09-22 14:17
言葉の解釈違い、及び分野(言語)によって細かい違いは発生しますが、未記入さんの補足通りです。 「トランザクション」と一言とっても、様々なトランザクションありけり。 一応簡単に自分の補足ということで、 トランザクション ┣物理排他(=悲観的ロック) ┗論理排他(=楽観的ロック) 物理排他と論理排他の言葉について違和感(一般的でないとか)があるかもしれませんが、この辺は勘弁を。 # 悲観ロック/楽観ロック...記憶の彼方に飛んでて、ひさびさに聞き思い出しました。
やはり余計な世話でしたか...(^^; | ||||||||||||||||||||||||
|
投稿日時: 2004-09-22 14:29
余計なお世話など思ってはいません。
そのお世話から、また新たにいろいろな意見が聞けるので とても勉強になりました。 改めて、未記入さん、えんぞさん、ありがとうございました。 | ||||||||||||||||||||||||
|
投稿日時: 2004-09-22 15:11
隔離性の保証もトランザクションの重要な機能です。 保証レベルにはいろいろありますが。 そして隔離性と排他制御は非常に密接な関係にあります。
楽観・悲観の話をするなら、更新ロックではなくて読み取りロックのほうですかね。「確実な更新」というのを「ロストアップデートの回避」と解釈しての話ですが。
いや、少なくとも情報処理の分野でトランザクションと言えば、ACID特性のアレだけだと思います。「実装レベルは様々」なら分かりますが。 単なる「処理」を「トランザクション」と言うのは聞きますが、それはすごく抽象的な言い回しで、ここで議論すべきものとは思えないし。
さすがにちょっと誤解を招きすぎると思います。 トランザクション=ロック ではないので。 それを言うなら、 ロック ┣悲観的ロック ┗楽観的ロック でしょう。 | ||||||||||||||||||||||||
|
投稿日時: 2004-09-22 16:18
トランザクションの分離性と排他は関係ないと思います。高位の分離レベルを実現するために、ロックを使用しているので「密接」なのは事実ですが。たとえば、Oracle のように非ロック(つまり排他せず)で読取り一貫性を提供しトランザクションの分離性を実現しているデータベースもありますので。
悲観的ロックを実現できるのは、更新ロック、排他ロックだけでしょう。共有ロックでは変換デッドロックが発生する可能性があるので「確実な更新」を保証することができません。実際、ADO で 悲観的ロック(adLockPessimistic) オプションを指定すると、更新ロックがかかるようです。
んー、どうなんでしょうね。私はいまだに疑問に思っているのです。なぜロックをかけないのに「楽観的ロック」と呼ぶのだろうと。
この表現のほうが分かりやすいと思います。(あ、トランザクションにぶら下がってるのはおかしいけど。) データベースの機能でロックをかけるのが「物理排他」、データベースではロックをかけないけど、アプリケーションレベルで排他制御を行う楽観的ロックを「論理排他」と呼ぶわけですよね。なるほど分かりやすいと思います。 | ||||||||||||||||||||||||
|
投稿日時: 2004-09-22 16:39
自分で発言しておいてなんですが、「物理排他/論理排他」の言葉撤回。 (検索でヒットゼロだから) どこの現場で覚えたのやら。。。 | ||||||||||||||||||||||||
|
投稿日時: 2004-09-22 16:59
それはあくまでも読み取りのほうだけで、更新はやっぱりロックによって分離していますから。 それから「保証レベルにはいろいろある」と言いました。 どういうロックをどういう範囲でどのくらいの期間保有するかによって変わってくるということです。 ちなみにそのロックは悲観・楽観を問いません。例えばOracleのSerializable分離レベルなどは、一部を楽観ロックで実装しています。
なるほど。「確実な更新」っていうのは、楽観的ロックみたく、更新時に「最新じゃないよ」エラーが返らないようにする、しかも共有から排他にアップグレードする際のデッドロックの可能性もなくす、っていう意味でしたか。 であれば納得です。
同感です。でもそれが今のところ世間の共通理解になっているのだから、仕方がないと思っています。
誤解が生まれなければ僕はそんなにこだわりません。 ただ未記入さんと同様、僕も最初は何のことか分からなかったもんで。 |