ホーム   フォーラム   FAQ
 
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

レコードロック解除待ちが出る原因は?

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2014-3-31 18:43
Tanda  長老   投稿数: 2151
mysticageさん

レコードロック解除待ちが発生するのは、基本的にアクセスW共有W
のときのみです。また、遅延トランザクションでは楽観的ロックが
掛かるので、レコードロック解除待ちは発生しません。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2014-3-26 11:37
mysticage  一人前   投稿数: 77
Puさん、ありがとうございます。

正解がないような質問をしてしまい、申し訳ありません。

Magicでのトランザクションについては、まだ理解しきれていない
部分もありますが、少しずつ勉強していこうと思います。

どこでコミットしたり、どこまでロールバックするかなど考えてみたいと思います。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2014-3-20 22:39
pu_mahalo  長老 居住地: 大阪  投稿数: 775
こんにちは Puです。

処理をどうしたいのか(トランザクションをどうかけたいのか)
によってか色々で どれが正解と言うのはないと思います。

命令で言えば
BeginTransaction() 'トランザクション処理を開始する
UPDATE hogeTBL SET price = 3000
WHERE sh_cd = 'A0001'"
Try
Commit() 'トランザクション処理をCommit(確定)する
Catch
Rollback() '例外が発生したらトランザクション処理をRollback(破棄)する
End Try

などと 一件処理する毎に確定するなら 上記のようなタイミング
(オンラインタスクなどは このような場合が多いでしょう)

同じオンラインタスクでも グリッド形式でマスタ保守なんかする場合 今保守した内容を全てRollback(破棄)したい場合など
私はtask前で掛ける事もします。

バッチの場合は 何処まで例外が発生したら
何処まで戻すかで変わると思いますが。

回答になったでしょうか 文章能力がないので
許してください。

でわ〜でわ〜
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2014-3-20 10:21
mysticage  一人前   投稿数: 77
Puさん、ありがとうございます。

そのテーブルを使用しているプログラムを調査しました。
トランザクション開始が[T=タスク前の前]になっているタスクがありました。(トランザクションモードは[W=親と同じ])
そのタスクはバッチタスクで、更新をしています。
これが原因か不明ですがトランザクションの開始は何に設定したほうがレコードロック解除待ちになりにくいでしょうか?
一般的に、メインソースにテーブルを指定した場合のトランザクションの設定とリンク書出でのトランザクションの設定はどのようにするのがよいのでしょうか?
プログラムの内容にもよるとは思いますが、何かマイルール的なことがありましたら教えて頂けないでしょうか。

よろしくお願いします。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2014-3-20 8:15
pu_mahalo  長老 居住地: 大阪  投稿数: 775
こんにちは Puです

他のtaskがupdateまたはinsertでtransactionの開始pointが
タスク前とかで transactionロックされているのでは?

あくまでも推測ですが
他の更新taskのstart transactionの場所を確認されればどうでしょうか?

でわ〜でわ〜
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 | 投稿日時 2014-3-19 20:14
mysticage  一人前   投稿数: 77
いつも参考にしています。

以下の環境で実行しております。
クライアント:WindowsXp
サーバー:Windows2003
dbMagicV10
SQLServer2008R2
C/S形式

バッチ処理中にあるファイルがレコードロック解除待ちになります。
バッチ処理の中で、2つのタスクでこのファイルを、リンク照会で参照しているファイルで、
アクセスがR、共有がWになっております。
自分の認識では、アクセスがR、共有がWの設定で、自分のタスクでは読取のみでファイルを参照し、他のタスクからは、読み取りも書き出しもできるという設定だと思っております。
ですので、他のそのファイルに対して更新処理がされているかもしれません。
そのため、レコードロック解除待ちにはならないのかなと思っていました。
そもそも、レコードロック解除待ちの発生原因に自分の認識の違いがあるのでしょうか。
今更なことですが、レコードロック解除待ちになる発生原因と、
今回の発生に対する解決策ありましたら教えて頂けないでしょうか。
よろしくお願い致します。
投票数:0 平均点:0.00

  条件検索へ


Copyright (C) Magic Software Japan K.K. All Rights Reserved.
個人情報保護方針 会員規約