複数AMP間での問合わせのスキュー処理 - 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

AMP vprocは常に並列で実行されますが、AMPステップ処理の並列操作は、データ行や列値をディスク間でストライピングする方法に影響されます。

不均衡、スキュー状態、またはスパイク状態のディスク負荷は、1~数個のAMPに最多の入出力を実行させる原因となります。例えば、数字列でゼロやnullが認められている場合、行の大部分が同じAMPにハッシュされることがあります。

ディスク負荷のバランスが不適正である場合、この状況を解消する操作上の方法を考慮してください。例えば、次のようになります。

  • ゼロやnullを持つ列に対するクエリーやビューには、"WHERE NOT NULL"や"NOT= 0"などの修飾子を使用できます。
  • 原因がNUPIである場合、特に大きなテーブルでは、インデックスを再定義して固有性の割合を高めることを検討します。

よくあるスキュー問題

問題 原因 結果
同じ行ハッシュ値を持つ行が多すぎる。
  • 同じ行ハッシュ値を持つ行が、単一のデータ ブロックに収まり切らない。
  • 行が他のデータ ブロックにあふれる。
固有性のきわめて低いプライマリ インデックス(PI)によって、テーブルにスキューが生じている。

NUPI値の発生数が1000を超えるときに、性能低下による問題が始まると考えられています。これは、同じNUPI値の行を収めるのに必要なデータ ブロックの数が5を超えるようになる数字です。

スキューのあるテーブルの識別と修正を参照してください。

  • 更新の場合の入出力が増加する。
  • 挿入およびFastLoadの場合の比較が増加する(CPUの処理と入出力の増加)。
  • RestoreおよびTable Rebuildユーティリティの性能が低下する。
データ ブロックのサイズの設定が低すぎる。

データ ブロック サイズの管理を参照してください。

ブロック レベル圧縮を使用しているシステム上では、サイズは最大に設定されるため、データ ブロックのサイズが問題の原因になることはありません。
一部のAMPに、他のAMPよりも相当多くのテーブル行が割り振られる。
  • あるNUPI値を持つ行が、他のNUPI値を持つ行よりもかなり多い。
  • 結合または集約において、結合フィールドが著しくスキューしている。例えば、顧客テーブル内の都市コードに対して結合を実行するときに、顧客数が少数の都市に集中しているような場合が、これに該当します。
  • 参照整合性(RI)を使用している場合に、著しくスキューしている参照列(例: 都市コード)がある。
  • フル テーブル スキャンおよびバルク挿入の際、AMPのCPU並列処理の効率が劣化する。
  • 更新に関する入出力が増加し、挿入に関する比較(および入出力)が増加する。