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

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
管理
Publication ID
B035-1093-171K-JPN
Language
日本語 (日本)

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. 検出された、スキューのあるテーブルのプライマリ インデックスを再定義します。

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