使用 Amazon Redshift Spectrum 的最佳實務 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon Redshift Spectrum 的最佳實務

本節提供使用 Amazon Redshift Spectrum 的最佳實務概觀。建議您遵循這些最佳實務,在使用 Redshift Spectrum 時獲得最佳效能:

  • 請考慮檔案類型對 Redshift Spectrum 查詢效能有重大影響。若要改善效能,請使用 ORC 或 Parquet 等單欄編碼檔案,並僅針對非常小的維度資料表使用 CSV 格式。

  • 使用字首型分割區來利用分割區刪除。這表示使用以金鑰輸入資料湖中分割區的篩選條件。

  • Redshift Spectrum 會自動擴展以處理大型請求,因此盡可能在 Redshift Spectrum 中執行 (例如述詞下推)。

  • 請注意經常篩選資料欄上的分割區檔案。如果資料由一或多個篩選的資料欄分割,Redshift Spectrum 可以利用分割區刪除,並略過掃描不需要的分割區和檔案。常見做法是根據時間對資料進行分割。

  • 您可以使用下列查詢,檢查分割區的有效性和 Redshift Spectrum 查詢的效率。

    Select query, segment, max(assigned_partitions) as total_partitions, max(qualified_partitions) as qualified_partitions From svl_s3partition Where query=pg_last_query_id() Group by 1,2;

    上述查詢顯示下列項目:

    • total_partitions – 所辨識的分割區數量 AWS Glue Data Catalog

    • qualified_partitions – Amazon Simple Storage Service (Amazon S3) 上存取 Redshift Spectrum 查詢的字首數量

  • 您也可以檢查SVL_S3QUERY_SUMMARY系統資料表,以了解分割區的有效性和 Redshift Spectrum 查詢的效率。若要這麼做,請使用下列陳述式。

    Select * From svl_s3query_summary Where query=pg_last_query_id();

    除了顯示分割區刪除效率的檔案之外is_partitioned,上述查詢還會傳回更多資訊,包括 s3_scanned_rows/bytes、 和 s3_returned_rows/bytes值。

Redshift Spectrum 中的述詞下推

使用述詞下推可避免在 Amazon Redshift 叢集中消耗資源。您可以將許多 SQL 操作向下推送至 Redshift Spectrum layer。我們建議您盡可能利用此項目。

請謹記以下幾點:

  • 您可以在 Redshift Spectrum layer 中完整評估某些類型的 SQL 操作,包括下列項目:

    • GROUP BY 子句

    • 比較和模式比對條件 (例如 LIKE)

    • 彙總函數 (例如 COUNT、、SUMAVGMINMAX)

    • regex_replacedate_truncto_upper和其他 函數

  • 您無法將一些操作推送至 Redshift Spectrum layer,包括 DISTINCTORDER BY。請盡可能ORDER BY在查詢的最上層執行,因為排序是在領導節點中完成。

  • 檢查您的查詢EXPLAIN計劃,以確認述詞下推是否有效。若要在EXPLAIN命令中尋找 Redshift Spectrum 部分,請查看以下步驟:

    • S3 循序掃描

    • S3 HashAggregate

    • S3 查詢掃描

    • 循序掃描 PartitionInfo (分割區資訊)

    • 分割區循環

  • 在查詢中使用最少的資料欄數。如果資料是 Parquet 或 ORC 格式,Redshift Spectrum 可以消除掃描的資料欄。

  • 廣泛使用分割區進行平行處理和消除分割區,並盡可能將檔案大小保持在至少 64 MB。

  • TABLE PROPERTIES 'numRows'='nnn' 如果您使用 CREATE EXTERNAL TABLE或 ,請設定 ALTER TABLE。Amazon Redshift 不會分析外部資料表,以產生查詢最佳化工具用來產生查詢計劃的資料表統計資料。如果未設定統計資料,Amazon Redshift 會假設外部資料表是較大的資料表,而本機資料表是較小的資料表。

Redshift Spectrum 的查詢調校秘訣

調整查詢時,建議您謹記下列事項:

  • Amazon Redshift 叢集可以針對查詢進行的 Redshift Spectrum 節點數量,會與叢集中的配量數量相關聯。

  • 調整叢集的大小,可以讓叢集的本機運算設定檔、儲存設定檔和 Amazon S3 資料湖查詢的查詢功能受益。

  • Amazon Redshift 查詢計畫器會盡可能將述詞和彙總推送到 Redshift Spectrum 查詢層。

  • 當從 Amazon S3 傳回大量資料時,該處理將受到叢集資源的限制。

  • 由於 Redshift Spectrum 會自動擴展以處理大型請求,因此每當您將處理推送到 Redshift Spectrum layer 時,整體效能都會提高。