查詢最佳化的資料分佈 - Amazon Redshift

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

查詢最佳化的資料分佈

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

注意

本節將向您介紹 Amazon Redshift 資料庫中資料分佈的原則。建議您使用 DISTSTYLE AUTO 建立資料表。如果您這樣做,Amazon Redshift 會使用自動資料表最佳化來選擇資料分發樣式。如需詳細資訊,請參閱自動資料表最佳化。本節的其餘部分提供有關分佈樣式的詳細資料。

資料分佈概念

Amazon Redshift 的一些資料分佈概念如下。

節點和配量

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

運算節點的磁碟儲存空間會分成一些配量。每一節點的配量數目取決於叢集的節點大小。節點全部會參與在執行的平行查詢中,以處理盡可能平均地分佈於配量的資料。如需每個節點大小有多少配量的相關資訊,請參閱《Amazon Redshift 管理指南》中的關於叢集和節點

資料重新分佈

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

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

資料分佈目標

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

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

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

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