- - PR -
DB2のロックについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-09-04 11:18
初めて投稿いたします。
DB2のロックについて苦慮してます。 よろしくお願いします。 環境:DB2 v9.1 主キーが「列1、列2、列3」というテーブルAがあります。 コマンド・エディター(事前にSQLステートメントの自動コミットを行わない設定)にて このテーブルAに対し以下の INSERT を実行します。 INSERT INTO テーブルA (列1,列2,列3...) VALUES (23,1,1, ...) その後、以下の SELECT を実行します。 SELECT * FROM テーブルA WHERE 列1 = 1 AND 列2 = 1 すると、ロック(エラーコード:-952)がかかります。 テーブルAにトリガーは設定していません。 DB2を再起動後、上記の手順を実施してもロックがかかります。 また、他の環境に関連データを全て持っていって実行すると再現しません。 理屈的にはロックするはずは無いと思うのですが、 ロックする可能性はあるのでしょうか? 解決策があれば一番良いのですが、 そもそも、理屈的に有り得るのかが知りたいところです。 ご存知の方、よろしくお願い致します。 | ||||
|
投稿日時: 2008-09-04 12:00
そのINSERTとSELECTは、同一トランザクションから実行しているのですか?
また、テーブルAにはそのSELECT文が利用できるようなインデックスは定義されていますか? | ||||
|
投稿日時: 2008-09-04 12:44
カーニーさん、書き込みありがとうございます。
> そのINSERTとSELECTは、同一トランザクションから実行しているのですか? はい。同一のトランザクションからの実行です。 > また、テーブルAにはそのSELECT文が利用できるようなインデックスは定義されていますか? はい。主キーが「列1、列2、列3」となっており、 SELECT文の条件式に「列1、列2」を指定していますので。 本件は問題のデータ(テーブル内全て)をエクスポートし、 他のサーバーに同じ環境を作成し、インポートして試してみると問題が発生しません。 索引が壊れているとか。。。 (本番稼動機な為、索引の再作成がなかなか出来ず困っています) | ||||
|
投稿日時: 2008-09-04 13:48
そうですか。ごめんなさい、分かりません。
ところで、
-952って、これですか? http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.msg.doc/doc/sql0952.htm |
1