識別列キャッシュは、識別列テーブルへのINSERT操作が処理されるときにはいつでも一定範囲の列番号で埋められます。範囲の値は、以下の要因に基づいて決められます。
- DBC.IdCol.AvailValueに格納されている、次に使用可能な値
- システムに対して定義された識別列の増加バッチ サイズ
この量は、DBS制御パラメータのIdColバッチ サイズで指定されます。詳細については、<Teradata Vantage™ - データベース ユーティリティ、B035-1102>と識別列へのバルク挿入の最適化を参照してください。
キャッシュ内の使用可能な識別列番号のプールが使い果たされたとき、Teradata DatabaseはDBC.IdCol.AvailValueを更新し、新しい範囲の番号を入手する必要があります。
テーブルに対するSELECT文時のように、実行中のトランザクションがDBC.IdColをロックする場合、列番号プールへのシステム アクセスは一時的にブロックされ、関連する識別列テーブルへのすべての挿入は、トランザクションがコミットまたはアボートされるまで延期されます。DBC.IdColに対するSELECT文によって、ACCESSロックがテーブルに設定されます。
DBC.IdColへのSELECT権限は、ユーザーDBCおよびDBCによって権限が明示的に付与されたユーザーに限られます。
以下の両方の条件がTRUEであるとき、デフォルト ロックをACCESSからREADまたはそれ以上の強度にアップグレードした場合に、Teradataセッション モードでSELECT文をDBC.IdColに対して実行するとデッドロックを作成する危険があります。
- SELECT文が明示的なトランザクションの境界内で実行される。
- 同時INSERT操作が、識別列テーブルで実行されている。