跳至內容

為什麼 Amazon Redshift 中的資料表在 vacuum sort benefit 為 0 時,仍顯示高未排序百分比?

1 分的閱讀內容
0

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 和 unsorted 的值。

如果您的 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 排序命令來手動清理資料表:

VACUUM SORT ONLY table_name;

**注意:**將 table_name 替換為資料表的名稱。

相關資訊

自動資料表排序

AWS 官方已更新 1 年前