DBC.IdCol上の識別列の挿入およびトランザクション結合テーブルのロック - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
ft:locale
ja-JP
ft:lastEdition
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage
識別列キャッシュは、識別列テーブルへの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操作が、識別列テーブルで実行されている。