Amazon Redshift のテーブルにおいて、未ソート率は高いものの、vacuum_sort_benefit の値は 0 になっています。
簡単な説明
Amazon Redshift は SVV_TABLE_INFO の未ソート列を計算し、ソートキーの順序と一致しないテーブルデータの割合を示します。未ソート率が高い場合は、VACUUM ソート操作を行うと、クエリのパフォーマンスが向上する可能性があります。
vacuum_sort_benefit の値から、ソート操作によってパフォーマンスが向上するかどうかを判断できます。値が 0 の場合は、ソートではクエリが最適化されないため、Amazon Redshift は VACUUM 操作の利点を得られません。
未ソート率が高いものの、vacuum_sort_benefit 値が 0 になる状況は、次の要因で発生する場合があります。
- Amazon Redshift は、最近のクエリプランに基づいて、ソートによるメリットは最小限であると判断した場合。クエリはテーブルのごく一部にのみアクセスする場合。あるいは、テーブルにアクセスするクエリはごくわずかである場合。
- そのクエリでは、ソートキー列によるフィルターや順序付けは行わない場合。テーブルがソートされずに表示されるものの、ソートの利点は最小限である場合。
- テーブルではクエリが実行されていないため、Amazon Redshift はソート順序を最適化する必要がない場合。
詳細については、「テーブルのバキューム処理」を参照してください。
解決策
ソートによってパフォーマンスが向上するかどうかを判断するには、vacuum_sort_benefit 値および未ソート値の両方を確認してください。
**vacuum_sort_benefit ** の値が 0 で、未ソート値が大きい場合は、データをソートしても、クエリパターンにはメリットがありません。vacuum_sort_benefit メトリクスは、ワークロードパターンに基づいてソートを行った場合の、潜在的なクエリパフォーマンスの向上を計算します。
次のクエリを実行して値を取得します。
SELECT "schema", "table", sortkey1, sortkey_num, unsorted, vacuum_sort_benefit
FROM SVV_TABLE_INFO
WHERE "table" = 'table_name';
注: **table_name ** を実際のテーブル名に置き換えてください。
ソートキーが頻繁にクエリされるフィルター列に合ったものであることを確認してください。ソートキーがクエリパターンに関連していない場合、未ソート率が高くてもパフォーマンスに大きな影響はありません。
ソートによってパフォーマンスが向上すると判断した場合は、次の VACUUM sort コマンドを実行し、手動でテーブルにバキューム処理を行ってください。
VACUUM SORT ONLY table_name;
注: **table_name ** を実際のテーブル名に置き換えてください。
関連情報
テーブルの自動ソート