ブロッキングの観点からは、HUTロックの動作はトランザクション ロックと同じです。 例えば、読み取りロックを設定すると、別のジョブは書き込みロックまたは排他的ロックを要求できなくなります。 反対に、書き込みロックを設定すると、読み取りロック、書き込みロック、または排他的ロックを要求できなくなります。 排他的ロックは、他のすべての種類のロックを無効にします。 あるオブジェクトのHUTロックとトランザクション ロックが競合すると、両方がトランザクション ロックまたはHUTロックであるかのように、お互いをブロックします。
- 永続性
トランザクション ロックは、トランザクションが継続している間だけ存在します。トランザクションが完了するかアボートされた後、ロックは解除されます。 HUTロックは、より長く続きます。 HUTロックは、RELEASE LOCKコマンドを明示的に発行するか、またはロック操作(ARCHIVEまたはRESTOREコマンドの実行など)が正常に完了し、かつ、RELEASE LOCKオプションが指定されていない限り、削除されません。 ロックは、コマンドが失敗した場合、ARCジョブが終了した場合、Teradataシステムが再始動した場合にも残ります。
- スコープ
トランザクション ロックには、セッション スコープがあります。つまり、このロックは、ロッキング トランザクションを実行しているセッションによって実行依頼されている任意のコマンドに適用されます。 同じオブジェクトに対して実行している別のセッションは、同じユーザーが実行している場合にも、独自のロックを要求します。
HUTロックには、ユーザー スコープがあります。つまり、このロックは、ユーザーがオブジェクトに関して実行している任意のTeradata ARC操作に適用されます。 ユーザーは、1つのオブジェクトに対してHUTロックを一度に1つだけ所有する必要があります。 HUTロックを使用する場合、そのユーザーはTeradata ARC操作でロックされたオブジェクトにアクセスできますが、他のユーザーはオブジェクトに対して競合するHUTロックを取得できなくなります。 さらに、HUTロックは、オブジェクトに対して競合するトランザクション ロック試行をすべてブロックします。これは、トランザクション ロックが同じユーザーによって行なわれている場合も同様です。 HUTロックは1つしかありません。 したがって、そのユーザーの別のジョブがオブジェクトにアクセス中である場合にも、ユーザーがオブジェクトにRELEASE LOCK操作を行なった場合には、常に既存のHUTロックが解除されます。
解除されていないHUTロックは、RDBMSの再起動が発生した場合も有効です。
トランザクションのロッキングと処理については、<SQLリクエストとトランザクション処理、B035-1142>を参照してください。