以下のテーブルが示すように、LOCKING修飾子で指定するロックのタイプは、ロック マネージャによって適用されたロックのタイプと必ずしも一致しません。
インデックス列を含むテーブルに指定するロックの種類 | システムによってテーブルに設定されたロックの種類 |
---|---|
|
WRITE |
|
READ |
EXCLUSIVE | EXCLUSIVE |
ロックの種類の詳細については、<Teradata Vantage™- SQLリクエストおよびトランザクション処理、B035-1142>を参照してください。
LOCKING修飾子の詳細については、<Teradata Vantage™ - SQLデータ操作言語、B035-1146>を参照してください。
READまたはWRITEロックは、インデックス サブテーブルが作成された後、ディクショナリのロックおよびヘッダーの変更の前にEXCLUSIVEロックにアップグレードされます。これによってテーブルに対するSELECTリクエストがブロックされる時間が減り、並行性が向上します。
明示的なEXCLUSIVEロックを指定しない場合、ロックをEXCLUSIVEの強度にアップグレードするまで、テーブルに対するCREATE INDEXリクエストと、同じテーブルに対してACCESSまたはREADロックを持つSELECTリクエストとを並行して実行できます。アップグレードが生じた場合、ロックを最初に要求した文が他方の文をブロックします。
テーブルに対するEXCLUSIVEロックを保持するCREATE INDEXリクエストと、そのテーブルに対するCOLLECT STATISTICS文は、CREATE INDEX文がロックをEXCLUSIVEにアップグレードするリクエストを出すまで、並行して実行できます。アップグレードが生じた場合、COLLECT STATISTICSリクエストが完了するまでCREATE INDEX文はブロックされます。テーブルに対してその後にCOLLECT STATISTICS文を実行すると、その文はCREATE INDEXプロセスが完了するまでブロックされます。
CREATE INDEXリクエストは、同じテーブルに対してALTER TABLE文または他のCREATE INDEX文と並行して実行できません。ロックを最初に要求した文が、他方の文をブロックします。