使用數據分配樣式 - Amazon Redshift

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

使用數據分配樣式

當您將資料載入資料表時,Amazon Redshift 會根據資料表的分佈樣式,將資料表的資料列分佈至每一個運算節點。當您執行查詢時,查詢最佳化工具會視需要將資料列重新配送至運算節點,以執行任何聯結與彙總。選擇資料表配送樣式的目的是,藉由在執行查詢之前,將資料配置至需要的位置,以降低重新配送步驟所帶來的影響。

注意

本節將介紹 Amazon Redshift 資料庫中資料分佈的原理。建議您建立資料表DISTSTYLE AUTO。如果您這樣做,Amazon Redshift 將使用自動表優化來選擇數據分配樣式。如需詳細資訊,請參閱 使用自動工作台優化。本節的其餘部分將提供有關分佈樣式的詳細資訊。

資料分佈概念

下面是 Amazon Redshift 的一些數據分發概念。

節點和配量

Amazon Redshift 叢集是一組節點。叢集中的每個節點都有自己的作業系統、專用的記憶體,以及專用的磁碟儲存空間。一個節點是領導節點,其會管理資料分佈至計算節點的資料和查詢處理任務。所以此計算節點提供資源來完成這些任務。

運算節點的磁碟儲存空間會分成一些配量。每一節點的配量數目取決於叢集的節點大小。例如,每個 DS2.XL 運算節點有兩個配量,而每個 DS2.8XL 運算節點有 16 個配量。節點全部參與運行平行查詢,以處理儘可能平均地分佈於配量的資料。如需每個節點大小具有的切片數詳細資訊,請參關於叢集和節點中的卓越 Amazon Redshift 叢集管理指南

資料重新分佈

當您將資料載入資料表時,Amazon Redshift 會根據資料表的分佈樣式,將資料表的資料列分佈至每一個節點配量。作為查詢計劃的一部分,最佳化器會決定資料區塊需要位於何處,才能最佳地運行查詢。然後,在查詢運行期間物理移動或重新分佈資料。重新分佈可能需要將特定資料列傳送至節點,以將整個資料表聯結或廣播至所有節點。

資料重新分佈可以佔查詢計劃成本的很大一部分,並且它產生的網絡流量可能會影響其他資料庫操作,並降低整體系統效能。在某種程度上,您可以預期最初定位資料的最佳位置,將資料重新分佈的影響降至最低。

資料分佈目標

當您將資料載入資料表時,Amazon Redshift 會根據您創建資料表時選擇的分佈樣式,將資料表的資料列分佈至運算節點和配量。資料分佈具有兩個主要目標:

  • 在叢集的節點之間平均分配工作負載。分佈不平均 (或資料分佈扭曲) 會迫使某些節點比其他節點更忙碌工作,導致查詢效能下降。

  • 運行查詢時將資料移動減至最少。如果參與聯結或彙總的資料列已在其聯結資料列位於其他資料表的叢集上共置,則最佳化器不需要在查詢運行時重新分佈儘可能多的資料。

您為資料庫選擇的分佈策略對查詢效能、儲存空間需求、資料載入和維護具有重要影響。藉由為每個資料表選擇最好的分佈樣式,您可以平衡資料分佈,並大幅改善整體系統效能。