レコードロック解除待ちが出る原因は?
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
Tanda
投稿数: 2151
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
mysticageさん
レコードロック解除待ちが発生するのは、基本的にアクセスW共有W
のときのみです。また、遅延トランザクションでは楽観的ロックが
掛かるので、レコードロック解除待ちは発生しません。
レコードロック解除待ちが発生するのは、基本的にアクセスW共有W
のときのみです。また、遅延トランザクションでは楽観的ロックが
掛かるので、レコードロック解除待ちは発生しません。
投票数:0
平均点:0.00
mysticage
投稿数: 77
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
Puさん、ありがとうございます。
正解がないような質問をしてしまい、申し訳ありません。
Magicでのトランザクションについては、まだ理解しきれていない
部分もありますが、少しずつ勉強していこうと思います。
どこでコミットしたり、どこまでロールバックするかなど考えてみたいと思います。
正解がないような質問をしてしまい、申し訳ありません。
Magicでのトランザクションについては、まだ理解しきれていない
部分もありますが、少しずつ勉強していこうと思います。
どこでコミットしたり、どこまでロールバックするかなど考えてみたいと思います。
投票数:0
平均点:0.00
pu_mahalo
居住地: 大阪
投稿数: 775
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
こんにちは Puです。
処理をどうしたいのか(トランザクションをどうかけたいのか)
によってか色々で どれが正解と言うのはないと思います。
命令で言えば
BeginTransaction() 'トランザクション処理を開始する
UPDATE hogeTBL SET price = 3000
WHERE sh_cd = 'A0001'"
Try
Commit() 'トランザクション処理をCommit(確定)する
Catch
Rollback() '例外が発生したらトランザクション処理をRollback(破棄)する
End Try
などと 一件処理する毎に確定するなら 上記のようなタイミング
(オンラインタスクなどは このような場合が多いでしょう)
同じオンラインタスクでも グリッド形式でマスタ保守なんかする場合 今保守した内容を全てRollback(破棄)したい場合など
私はtask前で掛ける事もします。
バッチの場合は 何処まで例外が発生したら
何処まで戻すかで変わると思いますが。
回答になったでしょうか 文章能力がないので
許してください。
でわ〜でわ〜
処理をどうしたいのか(トランザクションをどうかけたいのか)
によってか色々で どれが正解と言うのはないと思います。
命令で言えば
BeginTransaction() 'トランザクション処理を開始する
UPDATE hogeTBL SET price = 3000
WHERE sh_cd = 'A0001'"
Try
Commit() 'トランザクション処理をCommit(確定)する
Catch
Rollback() '例外が発生したらトランザクション処理をRollback(破棄)する
End Try
などと 一件処理する毎に確定するなら 上記のようなタイミング
(オンラインタスクなどは このような場合が多いでしょう)
同じオンラインタスクでも グリッド形式でマスタ保守なんかする場合 今保守した内容を全てRollback(破棄)したい場合など
私はtask前で掛ける事もします。
バッチの場合は 何処まで例外が発生したら
何処まで戻すかで変わると思いますが。
回答になったでしょうか 文章能力がないので
許してください。
でわ〜でわ〜
投票数:0
平均点:0.00
mysticage
投稿数: 77
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
Puさん、ありがとうございます。
そのテーブルを使用しているプログラムを調査しました。
トランザクション開始が[T=タスク前の前]になっているタスクがありました。(トランザクションモードは[W=親と同じ])
そのタスクはバッチタスクで、更新をしています。
これが原因か不明ですがトランザクションの開始は何に設定したほうがレコードロック解除待ちになりにくいでしょうか?
一般的に、メインソースにテーブルを指定した場合のトランザクションの設定とリンク書出でのトランザクションの設定はどのようにするのがよいのでしょうか?
プログラムの内容にもよるとは思いますが、何かマイルール的なことがありましたら教えて頂けないでしょうか。
よろしくお願いします。
そのテーブルを使用しているプログラムを調査しました。
トランザクション開始が[T=タスク前の前]になっているタスクがありました。(トランザクションモードは[W=親と同じ])
そのタスクはバッチタスクで、更新をしています。
これが原因か不明ですがトランザクションの開始は何に設定したほうがレコードロック解除待ちになりにくいでしょうか?
一般的に、メインソースにテーブルを指定した場合のトランザクションの設定とリンク書出でのトランザクションの設定はどのようにするのがよいのでしょうか?
プログラムの内容にもよるとは思いますが、何かマイルール的なことがありましたら教えて頂けないでしょうか。
よろしくお願いします。
投票数:0
平均点:0.00
pu_mahalo
居住地: 大阪
投稿数: 775
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
こんにちは Puです
他のtaskがupdateまたはinsertでtransactionの開始pointが
タスク前とかで transactionロックされているのでは?
あくまでも推測ですが
他の更新taskのstart transactionの場所を確認されればどうでしょうか?
でわ〜でわ〜
他のtaskがupdateまたはinsertでtransactionの開始pointが
タスク前とかで transactionロックされているのでは?
あくまでも推測ですが
他の更新taskのstart transactionの場所を確認されればどうでしょうか?
でわ〜でわ〜
投票数:0
平均点:0.00
mysticage
投稿数: 77
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
いつも参考にしています。
以下の環境で実行しております。
クライアント:WindowsXp
サーバー:Windows2003
dbMagicV10
SQLServer2008R2
C/S形式
バッチ処理中にあるファイルがレコードロック解除待ちになります。
バッチ処理の中で、2つのタスクでこのファイルを、リンク照会で参照しているファイルで、
アクセスがR、共有がWになっております。
自分の認識では、アクセスがR、共有がWの設定で、自分のタスクでは読取のみでファイルを参照し、他のタスクからは、読み取りも書き出しもできるという設定だと思っております。
ですので、他のそのファイルに対して更新処理がされているかもしれません。
そのため、レコードロック解除待ちにはならないのかなと思っていました。
そもそも、レコードロック解除待ちの発生原因に自分の認識の違いがあるのでしょうか。
今更なことですが、レコードロック解除待ちになる発生原因と、
今回の発生に対する解決策ありましたら教えて頂けないでしょうか。
よろしくお願い致します。
以下の環境で実行しております。
クライアント:WindowsXp
サーバー:Windows2003
dbMagicV10
SQLServer2008R2
C/S形式
バッチ処理中にあるファイルがレコードロック解除待ちになります。
バッチ処理の中で、2つのタスクでこのファイルを、リンク照会で参照しているファイルで、
アクセスがR、共有がWになっております。
自分の認識では、アクセスがR、共有がWの設定で、自分のタスクでは読取のみでファイルを参照し、他のタスクからは、読み取りも書き出しもできるという設定だと思っております。
ですので、他のそのファイルに対して更新処理がされているかもしれません。
そのため、レコードロック解除待ちにはならないのかなと思っていました。
そもそも、レコードロック解除待ちの発生原因に自分の認識の違いがあるのでしょうか。
今更なことですが、レコードロック解除待ちになる発生原因と、
今回の発生に対する解決策ありましたら教えて頂けないでしょうか。
よろしくお願い致します。
投票数:0
平均点:0.00