Symfoware Serverで行単位の排他を利用し、インデックスを使わないUPDATE文を実行した場合の排他について

行単位の排他を行う設定にしているのに、インデックスを利用しないUPDATE文を実行すると、後続のSELECT文が待たされます。行単位の排他からテーブル単位の排他に変更されるのですか?
行単位の排他を行う設定にしている場合、SQL文の内容によって排他の単位は変更されません。
インデックスを使用しないUPDATE文を実行すると、テーブルの先頭から最後まで更新対象の行を検索します。その際、排他(SH)をかけながら行を走査し、更新対象の行には排他(EX)をかけていきます。排他は、コミットが完了するまで保持されます。その結果、テーブルのすべての行に排他がかかることになります。
SELECT文もまたテーブルの先頭から最後まで検索し、すべての行に排他(SH)をかけます。
先行するUPDATE文が排他(EX)をかけた行には、後続のSELECT文が排他(SH)をかけることはできません。そのため、先行するUPDATE文の排他解除待ちとなります。
製品・サービス区分 Symfoware
製品・サービス情報
対象製品 Symfoware Server (Native Interface)
プラットフォーム Windows, Solaris, Linux
アンサー種別 技術サポート
このページの先頭へ