メインコンテンツへスキップ

オンラインタスク、レコードロック解除待ち

コメント

6件のコメント

  • tanda

    DBロックを利用するか、あるいはMagicロックを利用するか、あるいはロジックでロックを制御するかは、ケースバイケースですね。一番簡単なのは、従来通りのMagicロックですね。34年前からずっと同じ形態です。

  • nkmt

    ISHIJIMAさん、tandaさん レスありがとうございます。
    今日はあるお客様から、入金伝票入力画面から領収書発行をしようとしたら動かないと電話がありました。
    画面左下に、入金伝票レコードロック解除待ちが小さく出ていましたが、お客様は気付いておりませんでした。
    誰それが編集中ですよ!と表示されていたらいいのかもな、と思い投稿しました。

    ISHIJIMAさんのリソースロックは
    Lock('受注番号='&Trim(Str(受注番号,'9')),0) みたいなのと
    その情報を記録する為にDBにも書いている物と想像します。

  • nkmt

    今日私が遭遇した分は、Magicロックですね。

  • nkmt

    レコードロック解除待ちが実際に起きているかどうかは複数台で実験しないとわからないですよね。
    大昔、他社作者行方不明販売管理の今では懐かしいSCSI HDサーバーが壊れて、当方意欲作新販売管理初リリースしたシステムがレコードロック多発で使い物にならなかった事がありました。
    そのdbMAGIC V8システムはその後、改善してまだ数社残っています。

  • nkmt

    ありがとうございます。そうですね。
    Lock関数にオプションパラメータが増えて、
    そのLockに関する「備考」も記述、表示されるといいかもしれませんね。
    Lockの度にDBに書き込めば、立派なログにもなりそうですね。

  • tanda

    アプリの表向きの動きやエラーメッセージを見ただけでは、それがMagicロックで動作しているのか、あるいはDBロックで動作しているのかは分からないですよ。とくに、近年のバージョンのMagicはデフォルトがDBロックの設定になっていますし。

    ただ、Magicロックの良いところは、遅延トランザクションで動いているプログラムでさえ、悲観的ロックを実現できるという点です。ただし、オンラインタスクのみです。RIAの遅延は楽観的ロックのみです。

サインインしてコメントを残してください。