SQL 倉儲大小調整、縮放和佇列行為
本文說明 SQL 倉儲的叢集大小調整、佇列和自動調整行為。
大小概覽
SQL 倉儲適用於無伺服器、專業和傳統類型,這些類型具有不同的效能功能和優化,可能會影響倉儲中的查詢效能。 請參閱 SQL 倉儲類型。 Databricks 建議在可用時使用無伺服器 SQL 倉儲。
針對任何倉儲類型,您可以選擇 叢集大小 作為其計算資源的配置。 優化 Databricks SQL 倉儲大小,不僅僅是考慮數據量或用戶計數。 查詢複雜度和並行查詢數目也是效能的重要因素。
Databricks SQL 倉儲會使用動態並行處理這些需求。 不同於靜態容量倉儲,Databricks SQL 會即時調整計算資源,以管理並行負載並最大化輸送量。 每個倉儲大小類別的每個單位都有固定的計算容量,但系統會調整資源數目,以因應不同的需求。
SQL 倉儲的群集規模
本節中的資料表會將 SQL 倉儲叢集大小對應至 Azure Databricks 叢集驅動程式大小和背景工作角色計數。 驅動程式大小僅適用於專業和傳統 SQL 倉儲。
注意
針對無伺服器 SQL 倉儲,在某些情況下,叢集大小可能會使用與 Pro 和傳統 SQL 倉儲檔中所列的實例類型不同的實例類型,以取得對等的叢集大小。 一般而言,無伺服器 SQL 倉儲之叢集大小的性價比,與專業和傳統 SQL 倉儲的性價比類似。
叢集大小 | 驅動程式的執行個體類型 (僅適用於專業和傳統 SQL 倉儲) | 背景工作角色計數 |
---|---|---|
2X-Small | Standard_E8ds_v4 | 1 x Standard_E8ds_v4 |
X-Small | Standard_E8ds_v4 | 2 x Standard_E8ds_v4 |
Small | Standard_E16ds_v4 | 4 x Standard_E8ds_v4 |
中 | Standard_E32ds_v4 | 8 x Standard_E8ds_v4 |
大型 | Standard_E32ds_v4 | 16 x Standard_E8ds_v4 |
X-Large | Standard_E64ds_v4 | 32 x Standard_E8ds_v4 |
2X-Large | Standard_E64ds_v4 | 64 x Standard_E8ds_v4 |
3X-Large | Standard_E64ds_v4 | 128 x Standard_E8ds_v4 |
4X-Large | Standard_E64ds_v4 | 256 x Standard_E8ds_v4 |
所有背景工作角色的執行個體大小都是 Standard_E8ds_v4。
每個驅動程式和背景工作角色都已連結 8 個 128 GB 的標準 LRS 受控磁碟。 連結的磁碟會每小時收費。
傳統和專業 SQL 倉儲所需的 Azure vCPU 配額
若要啟動傳統或 Pro SQL 倉儲,Azure 帳戶中的 Azure vCPU 配額必須夠 Standard_E8ds_v4 執行個體使用。 使用下列指導方針,判斷所需的 vCPU 配額:
如果您只有一或兩個 SQL 倉儲,請確認叢集中每個核心都有 8 個 Azure vCPU 可供使用。 這可確保您有足夠的 Azure vCPU 來允許您倉儲的重新布建,大約每 24 小時就會發生一次。 如果您的 SQL 倉儲使用自動調整或多重叢集負載平衡,您可能需要增加乘數。
- SQL 倉儲數目會逐漸增加,請讓叢集中每個核心擁有 4 到 8 個 Azure vCPU。 Databricks 建議先從較大的數目開始,並監視穩定性。
- SQL 倉儲所使用的 Azure vCPU 除了數據科學 & 工程或非 Databricks 工作負載所使用的叢集所使用的 Azure vCPU 之外。
若要要求額外的 Azure vCPU 配額,請參閱 Azure 文件中的標準配額:依 VM 系列調高限制。
注意
這份資料表中的資訊,可能會因產品或區域可用性和工作區類型而有所不同。
專業和傳統 SQL 倉儲的佇列和自動調整
Azure Databricks 會根據運算其結果的成本,限制指派給 SQL 倉儲之叢集上的查詢數目。 每個倉儲的叢集相應增加是以查詢輸送量、傳入查詢速率和佇列大小為基礎。 Databricks 建議每 10 個並行查詢使用一個叢集。 所有 SQL 倉儲類型佇列中的查詢數目上限為 1000。
Azure Databricks 增加叢集的根據為,處理目前執行之所有查詢、所有佇列查詢,以及未來兩分鐘內預期的傳入查詢所花費的時間。
- 如果不到 2 分鐘,請勿擴充。
- 如果是 2 到 6 分鐘,請增加 1 個叢集。
- 如果是 6 到 12 分鐘,請增加 2 個叢集。
- 如果是 12 到 22 分鐘,請增加 3 個叢集。
否則,Azure Databricks 會增加 3 個叢集,並針對每增加 15 分鐘的預期查詢負載,額外增加 1 個叢集。
此外,如果查詢在佇列中等候 5 分鐘,則一律會擴充倉儲。
如果負載持續 15 分鐘都很低,Azure Databricks 會縮減 SQL 倉儲。 它會保留足以處理過去 15 分鐘的尖峰負載的叢集。 例如,如果尖峰負載是 25 個並行查詢,Azure Databricks 會保留 3 個叢集。
無伺服器自動調整和查詢佇列
智能工作負載管理 (IWM) 是一組增強功能,提升無伺服器 SQL 倉儲快速且具成本效益地處理大量查詢的能力。 它使用機器學習模型預測傳入查詢的資源需求,同時即時監視倉儲的可用運算容量,動態管理工作負載。 追蹤倉儲中的這些和其他訊號,可讓 IWM 回應工作負載需求的變化。
這個動態管理可讓 IWM 執行下列動作:
- 快速擴充運算能力,維持低延遲。
- 以更接近硬體限制的速度接受查詢。
- 快速縮小,在需求低時將成本降到最低。
查詢到達倉儲時,IWM 會預測其成本。 同時,IWM 會即時監視倉儲的可用運算容量。 接下來,IWM 會使用機器學習模型,預測現有運算能力是否有需要的運算能力。 如果沒有所需的運算能力,則會將查詢新增至佇列。 如果有需要的運算能力,查詢就會立即開始執行。
IWM 會即時監視佇列。 如果佇列減少速度不夠快,自動調整功能會自動配置更多的運算資源。 新增容量之後,佇列查詢就會被分配到新的運算資源。 使用無伺服器 SQL 倉儲,可快速新增新的運算。 所有 SQL 倉儲類型佇列中的查詢數目上限為 1000。
調整無伺服器 SQL 倉儲大小
從較大的無伺服器 SQL 倉儲大小開始,然後在測試過程中逐步縮小。 不要從小型的無伺服器架構的 SQL 倉儲開始,然後再逐步擴增。 一般而言,從單一無伺服器 SQL 倉儲開始,並仰賴 Azure Databricks 自動調整無伺服器叢集大小、設定工作負載優先順序,以及快速讀取資料。 請參閱無伺服器自動調整和查詢佇列。
- 若要減少給定無伺服器 SQL 倉儲的查詢延遲:
- 如果查詢太大,必須儲存於磁碟,請增加大小。
- 如果查詢可高度平行處理,請增加大小。
- 如果您一次執行多個查詢,請為自動調整新增更多叢集。
- 若要降低成本,請嘗試減少規模,避免溢出至磁碟或顯著增加延遲。
用來監視和評估效能的工具
若要協助調整 SQL 倉儲的大小,請使用下列工具: