- 締切済み
デッドロックについて
(Java + ベンダー製DB) 以下のような複数トランザクションを順番に実行した場合、 デッドロックが発生する可能性はあるのでしょうか? トランザクションA (隔離レベル:READ UNCOMMITTED) SELECT * FROM A ... トランザクションB (隔離レベル:READ UNCOMMITTED) SELECT * FROM A, B ... トランザクションC (隔離レベル:READ UNCOMMITTED) SELECT * FROM C, D ... 個々のトランザクションでは単なるSELECT文のみで、しかも 隔離レベルがREAD UNCOMMITTEDであれば デッドロックは起こりえないと思うのですが、 100多重ほどでテストが行われたところ デッドロックが発生しているとの事でした。 デッドロックが発生する原因として何が考えられるでしょうか? 個人的には、どこかで更新プログラムが実行されていたとしか 考えられないのですが・・ よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- chukenkenkou
- ベストアンサー率43% (833/1926)
>(Java + ベンダー製DB) >隔離レベルがREAD UNCOMMITTEDであれば >デッドロックは起こりえないと思う 排他制御などの内部処理は、RDBMSにより、単位、強さ、期間などに、少なからず仕様差があります。 排他制御などの標準化は、後回しになったこともあり、RDBMSにより実装状況に大きな違いがある部分です。 例えば、排他制御に関係する指定を、SQL中の特別なキーワードであったり、SQL中のコメントであったり、設定ファイルなどであったりで細かな指定の組み合わせにより、他RDBMSと同じような動作をする機能を提供しています。 >デッドロックが発生しているとの事 >デッドロックが発生する原因として何が考えられるでしょうか? 事実関係が不明な上、RDBMS名やバージョン、資源などが具体的でなければ、誰も回答できません。
お礼
ご回答ありがとうございます。 守秘義務的な観点から、あまり具体的な内容については書けませんでした。