スキューのあるテーブルの検出と修正 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/upb1600054424724.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.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,288

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

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

    プライマリ インデックスの選択を参照してください。