TableSizeV Viewの問合わせによるスキュー テーブルの検出と修正 - Teradata Database - Teradata Vantage NewSQL Engine

Teradata Vantage™ - データベースの管理

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/tgx1512080410608.ditamap
dita:ditavalPath
ja-JP/tgx1512080410608.ditaval
dita:id
B035-1093
Product Category
Software
Teradata Vantage

DBC.TableSizeVには、スキューのあるテーブルの識別に役立つ情報が含まれています。プライマリ インデックスが不適切な場合にはテーブルのスキューが生じます。次のように、スキューのあるテーブルを参照する問合わせは、特定のAMP上で他のAMP上より多くの行を処理しようとして、領域を使い果たす可能性があります。

  • アクセスされるオブジェクトにスプール領域の制限が定義されている場合には、SELECT文によりスプール領域が使い果たされる可能性がある。
  • INSERT文やUPDATE文により固定領域が使い果たされる可能性がある。
  1. DBC.TableSizeVでスキューのあるテーブルを検出するには、次のSQL文を使用します。
    SELECT vproc AS
    "AMP", TableName (FORMAT 'X(20)'), CurrentPerm
    FROM DBC.TableSizeV
    WHERE DatabaseName = 'database'
    ORDER BY TableName, "AMP" ;
    
    AMP     TableName                CurrentPerm
    ---     --------------------     -----------             
    0       employee_upi_onempid     18,944
    1       employee_upi_onempid     18,944
    2       employee_upi_onempid     18,944
    3       employee_upi_onempid     19,968
    0       employee_nupi_ondept     4,096
    1       employee_nupi_ondept     30,208
    2       employee_nupi_ondept     15,360
    3       employee_nupi_ondept     12,228

    この例で、応答セットは2つのテーブルに関するAMP別の領域割り当てを表示します。次の点に注意する必要があります。

    • employee_upi_onempidでは、すべてのvproc間でCurrentPermは類似しています。固定領域は、システム内のすべてのAMPに相対的に均等に分散されています。
    • 表Employee_nupi_ondeptは十分に分散されていません。CurrentPermの数値は、異なるAMP上で4,096バイトから30,208バイトまでの範囲に及んでいます。
  2. 検出された、スキューのあるテーブルのプライマリ インデックスを再定義します。プライマリ インデックスの選択を参照してください。