AMP vprocは常に並列で実行されますが、AMPステップ処理の並列操作は、データ行や列値をディスク間でストライピングする方法に影響されます。
不均衡、スキュー状態、またはスパイク状態のディスク負荷は、1~数個のAMPに最多の入出力を実行させる原因となります。例えば、数字列でゼロやnullが認められている場合、行の大部分が同じAMPにハッシュされることがあります。
ディスク負荷のバランスが不適正である場合、この状況を解消する操作上の方法を考慮してください。例えば、次のようになります。
- ゼロやnullを持つ列に対するクエリーやビューには、"WHERE NOT NULL"や"NOT= 0"などの修飾子を使用できます。
- 原因がNUPIである場合、特に大きなテーブルでは、インデックスを再定義して固有性の割合を高めることを検討します。
よくあるスキュー問題
問題 | 原因 | 結果 |
---|---|---|
同じ行ハッシュ値を持つ行が多すぎる。
|
固有性のきわめて低いプライマリ インデックス(PI)によって、テーブルにスキューが生じている。 NUPI値の発生数が1000を超えるときに、性能低下による問題が始まると考えられています。これは、同じNUPI値の行を収めるのに必要なデータ ブロックの数が5を超えるようになる数字です。 スキューのあるテーブルの識別と修正を参照してください。 |
|
データ ブロックのサイズの設定が低すぎる。 データ ブロック サイズの管理を参照してください。 ブロック レベル圧縮を使用しているシステム上では、サイズは最大に設定されるため、データ ブロックのサイズが問題の原因になることはありません。
|
||
一部のAMPに、他のAMPよりも相当多くのテーブル行が割り振られる。 |
|
|