複数のトランザクションが、同一のオブジェクトに対する非共用ロックを必要とする作業を実行しなければならない場合、SQL Engineは、次のようにして並行性を制御します。
- 最初にアクセスを要求するトランザクションに対してロックを許可する。
- 後続のトランザクションを到着順に待ち行列に入れて、直前の問合わせが完了して新規ロックの許諾が可能になるまで、無制限に待機させる。ただし、以下の例外があります。
- LOCKING修飾子のNOWAITオプションで識別されたリクエストは、待ち行列に入らずに直ちにアボートされます。
- MultiLoadトランザクションは、50秒以上待機した後にタイムアウトさせることができます。<Teradata® MultiLoadリファレンス、B035-2409>を参照してください。
- デッドロックしたリクエストのうち、新しい方のリクエストをアボートする。デッドロックは、複数のリクエストがいくつかの同じオブジェクトへのアクセスを必要とする状況において、各リクエストがそれぞれ1つのオブジェクトのロック権を付与されていて、少なくとも1つのオブジェクトからロックアウトされているために、どのリクエストも完了できなくなる場合に発生します。
- 現行トランザクションが完了したらロックを解除し、待ち行列に入っている最も古いトランザクションに新しいロックを許可する
ロックとその使用法の詳細については、<Teradata Vantage™- SQLリクエストおよびトランザクション処理、B035-1142>を参照してください。