Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊,請參閱部落格文章
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
影響查詢效能的因素
有一些因素會影響查詢效能。您的資料、叢集和資料庫操作的下列層面,都會影響處理查詢的速度。
-
節點、處理器或配量的數量 – 運算節點會分割為配量。更多節點表示更多處理器和更多配量,透過在配量間並行執行部分的查詢,可讓您的查詢處理得更快速。不過,更多節點也表示更大的開支,因此必須尋找適合您的系統的成本與效能的平衡點。如需 Amazon Redshift 叢集架構的相關資訊,請參閱資料倉儲系統架構。
-
節點類型 - Amazon Redshift 叢集可以使用數種節點類型之一。每個節點類型可提供不同的大小和限制,以幫助您適當地調整叢集的規模。節點大小會決定叢集中每個節點的儲存容量、記憶體、CPU 和價格。如需節點類型的相關資訊,請參閱《Amazon Redshift 管理指南》中的 Amazon Redshift 叢集概觀。
-
資料配送 – Amazon Redshift 會根據資料表的配送樣式,將資料表資料儲存在運算節點。當您執行查詢時,查詢最佳化器會視需要將資料重新配送至運算節點,以執行任何聯結與彙整。選擇資料表的適當配送樣式,有助於降低重新配送步驟所帶來的影響,方法是在執行聯結之前,將資料放置在需要的位置。如需詳細資訊,請參閱分配資料以實現查詢最佳化。
-
資料排序排列 – Amazon Redshift 會根據資料表的排序索引鍵,以排序的順序將資料表資料儲存在磁碟上。查詢最佳化器和查詢處理器使用資料所在位置的資訊以減少必須掃描的區塊數量,藉以改善查詢速度。如需詳細資訊,請參閱排序索引鍵。
-
資料集大小 – 由於需要掃描和重新配送更多資料列,因此叢集中較多的資料量可能拖慢查詢的查詢效能。您可以透過定期清空和封存資料,以及使用述詞來限制查詢資料集,藉以減緩此影響。
-
並行操作 – 一次執行多個操作可能影響查詢效能。每個操作會使用可用查詢佇列中的一或多個位置,並使用與那些位置關聯的記憶體。如果其他操作正在執行,則可能沒有足夠的查詢佇列位置可供使用。在此情況下,查詢必須等候位置開放之後才可以開始處理。如需建立和設定查詢佇列的相關資訊,請參閱工作負載管理。
-
查詢結構 – 寫入查詢的方式會影響其效能。請對程序寫入盡可能多的查詢,並傳回符合您需求的最少資料。如需詳細資訊,請參閱設計查詢的 Amazon Redshift 最佳實務。
-
程式碼編譯 – Amazon Redshift 會為每個查詢執行計畫產生和編譯最佳化程式碼。編譯的程式碼執行速度更快,因為它消除了使用解譯器的額外負荷。為了將新查詢的延遲降至最低,同時保留編譯程式碼的效能優勢,Amazon Redshift 使用稱為合成的技術。合成會產生預先存在邏輯的輕量型配置,以立即處理新查詢,同時在背景編譯高度最佳化的查詢特定程式碼。這會從查詢執行的關鍵路徑移除編譯,因此新查詢的啟動速度更快,並提供與後續執行一致的效能。
Amazon Redshift 也會使用無伺服器編譯服務,將查詢編譯擴展到 Amazon Redshift 叢集的運算資源之外。編譯的程式碼區段會在本機快取在叢集上,並在叢集重新啟動後持續存在的幾乎無限制的遠端快取中。相同查詢的後續執行可以加快執行速度,因為它可以略過編譯階段。透過使用可擴展的編譯服務,Amazon Redshift 會平行編譯程式碼,以提供一致的快速效能。