影響查詢效能的因素 - Amazon Redshift

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

影響查詢效能的因素

有一些因素會影響查詢效能。您的資料、叢集和資料庫操作的下列層面,都會影響處理查詢的速度。

  • 節點、處理器或分片的數量— 將計算節點分割為分割。更多節點表示更多處理器和更多配量,透過在配量間並行執行部分的查詢,可讓您的查詢處理得更快速。不過,更多節點也表示更大的開支,因此必須尋找適合您的系統的成本與效能的平衡點。如需 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可以並行編譯代碼以提供始終如一的快速性能。工作負載加速的規模取決於查詢的複雜性和併發性。