データベース オブジェクトに対して、以下のロック モードを指定できます。
- Access
- Read
- Write
- Exclusive
ロック モードの競合
すべての未解決ロック リクエストについては、ロック モードの競合を調べることにより、データベース オブジェクトに対して同時に付与されるロック リクエストを判別できます。競合の内容を以下のテーブルにまとめておきます。
ロック モード | 暗黙Access | 暗黙Read | 暗黙Write | 暗黙Exclusive | Access | Read | Write | Exclusive |
---|---|---|---|---|---|---|---|---|
暗黙Access | X | X | X | X | X | X | X | |
暗黙Read | X | X | X | X | X | X | ||
暗黙Write | X | X | X | X | X | |||
暗黙Exclusive | X | X | X | X | ||||
Access | X | X | X | X | X | X | ||
Read | X | X | X | X | ||||
Write | X | X | ||||||
Exclusive |
明示および暗黙ロック モード
明示ロック モードは、データベース オブジェクトに対するアクセスを制限するための実際のロックです。通常は、実際のトランザクション処理の開始時点で取得されます。
暗黙ロック モードは、Teradata Databaseロック マネージャが明示ロックを取得する過程で使用する先取りロックです。先取りロックが使用されるのは、明示ロックが1つのステップではなく一連のステップによって取得される場合です。
例えば、テーブル レベルの明示ロックの取得について考えてみましょう。テーブル レベルの明示ロックを取得する前に、データベース レベルの暗黙ロックとテーブル レベルの暗黙ロックをまず取得しなければなりません。
ロック モードは、Lock Display出力のモード フィールドに表示されます。暗黙ロックには、アスタリスク(*)が付いているので、見分けがつきます。明示ロックの場合は、アスタリスクが付きません。
ロック リクエストのステータス
データベース オブジェクトに対するロック リクエストが認められるか、それともブロックされるかは、以下の条件によって決まります。
- すべての未解決ロック リクエストに関するロック モードの競合
- リクエストのロック レベルに基づくすべての暗黙ロックの取得が成功したかどうか
Lock Display出力には、認められたロック リクエストと、ブロックされたロック リクエストのセクションがそれぞれ別個に設けられています。ブロックされたリクエストの場合は、出力内のデータベース オブジェクトのレベルに関連したフィールドにハッシュ記号(#)が付きます。例えば、テーブル レベルのリクエストがブロックされた場合は、テーブルのフィールドに#記号が付くことになります。