自訂 SQL 池

適用於:✅ Microsoft Fabric 中的 SQL 分析端點與資料倉儲

這很重要

這項功能目前處於預覽階段。

自訂 SQL 池讓管理員能更掌控後端運算資源如何分配到其工作空間中的倉庫及 SQL 分析端點。

帶有自訂 SQL 池的 SQL 引擎示意圖。

Fabric Data Warehouse 提供自主的工作負載管理,將運算資源分離到內部的「SQL 池」中,這些池會根據需求獨立擴展。

預設情況下,隔離邊界為攝取(非SELECT 語句類型)與查詢處理(SELECT 語句)。 透過自訂 SQL 池,管理員可以:

  • 改變隔離邊界的數量(新增更多自訂的 SQL 池)。
  • 建立應用程式名稱專屬的自訂工作負載分類。
  • 透過最大資源百分比控制每個池的資源分配。

自訂 SQL 池的使用案例

自訂 SQL 池有兩個主要用途:保護工作負載免受資源競爭影響,以及防止因高消耗量導致的 Fabric 容量限制。

與自主工作負載池競爭的工作負載

這種情況適用於不同工作負載爭奪資源,導致關鍵工作負載未達效能目標。

案例範例

  • 當企業報告負載在 Fabric 入口網站的 SQL 查詢編輯器中執行即時使用者查詢時,效能表現不佳。

建議的方法

  • 將這些工作負載分散在兩個獨立的自訂 SQL 池中。
  • 將較大比例的資源分配給服務企業報告應用程式的資源池,確保更多資源可用於關鍵業務應用程式。

因高使用量導致容量調節

當高 Fabric 容量消耗導致節流,影響整體倉庫效能時,此情況適用。

案例範例

建議的方法

  • 減少分配給受影響倉庫的總資源百分比。
  • 監控此變更是否減少了查詢限流並提升整體效能。

自主工作負載管理與自訂 SQL 池的差異

主題 自主工作負載管理 自訂 SQL 池
Configuration 沒有(開箱即用) - 網頁介面
- API
許可 不適用 工作區管理員
Scope Workspace - 包含倉儲與 SQL 分析端點 Workspace - 包含倉儲與 SQL 分析端點
分類方法 語句類型(SELECT 或其他) - 應用程式名稱
- 應用程式名稱:正規表達式
量值單位 不適用 總後端節點的百分比
SQL 池 SELECT 或其他 使用者自訂配置
彈性容量 由 Fabric 管理(每個 SQL 池最多 12 倍,總共 24 倍) 使用者根據分配的後端節點百分比來定義。 總資源量仍然是24倍。

彈性容量

自訂 SQL 池允許管理員設定最大資源百分比,作為可分配的運算資源數量。 容量SKU大小的爆發因子將根據每個池給定的百分比來應用和使用。

分類器。

分類器是 SQL 請求的一個屬性,用來通知系統如何路由到適當的 SQL 池。

Fabric Data Warehouse 提供三種分類請求的方法:

分類器類型 說明 Configuration
陳述類型 將請求分類為SELECT(查詢)或非SELECT(包括所有 DML、DDL 語句) 僅有自主工作負載管理
應用程式名稱 - 在連接到 Fabric Warehouse 或 SQL Analytics 端點時,連接字串中使用的應用程式名稱(或程式名稱)。
- 支援每個自訂 SQL 池中多個應用程式名稱
- 128字元或以下
- 自訂 SQL 池間互斥
僅限自訂 SQL 池
應用程式名稱正則表達式 - 用於匹配應用程式名稱值的正則表達式。
- 僅對列表中的第一個值進行正則表達式的評估
僅限自訂 SQL 池

指引:

  • 每個工作區只能使用一種分類器類型。 單一工作空間中的所有自訂 SQL 池都必須使用相同的分類器。
  • 以應用程式名稱正則表達式分類器為例,若請求符合兩個或以上分類,自訂 SQL 池的選擇將是隨機的,且沒有優先排序標準。

許可

  • 管理員 工作區角色 的成員可以啟用或停用工作區的自訂 SQL 池。
  • 管理員工作區角色的成員可以更新自訂的 SQL 池組態。

配置自訂 SQL 池

你可以在 Fabric Data Warehouse 的 Fabric 入口網站或透過 API 呼叫來設定自訂 SQL 池。

顯示器

你可以在program_name系統檢視的 sql_pool_name and queryinsights.exec_requests_history 欄位看到查詢時記錄的應用程式名稱和 SQL 池。

你可以使用 program_name 作為應用程式名稱的分類器,或在應用程式名稱分類器的正則表達式模式中使用它。

舉例來說,要在最近的歷史中找到所有的program_name 和相應的 sql_pool_name:

SELECT DISTINCT 
         program_name
        ,sql_pool_name
FROM queryinsights.exec_requests_history;

你可以透過查詢 queryinsights.sql_pool_insights 視圖來判斷哪些 SQL 池正承受壓力。

例如,找出過去一週某個泳池承受壓力的時期。

SELECT [timestamp]
        ,sql_pool_name
        ,max_resource_percentage
        ,is_pool_under_pressure
FROM queryinsights.sql_pool_insights
WHERE is_pool_under_pressure = 1
AND [timestamp] > DATEADD(WEEK, -1, GETDATE())
ORDER BY [timestamp] DESC, sql_pool_name;

若要依照某些查詢成本指標彙總 program_name 價值,您可以使用以下查詢:

SELECT 
    program_name,
    sql_pool_name,
    [CPU] = SUM(allocated_cpu_time_ms), 
    [Disk] = SUM(data_scanned_disk_mb), 
    [Memory] = SUM(data_scanned_memory_mb), 
    [Remote storage] = SUM(data_scanned_remote_storage_mb)
FROM queryinsights.exec_requests_history
GROUP BY program_name, sql_pool_name
ORDER BY [CPU] desc, [Disk] desc, [Memory] desc, [Remote storage] desc;

局限性

  • 工作區必須包含一個或多個倉庫或 SQL 分析端點,才能執行 API。
  • 每個工作區最多可以建立八個自訂 SQL 池。
  • 當自訂 SQL 池在查詢執行時被移除,查詢會失敗,並會跳出「調整自訂 SQL 池大小不會造成查詢失敗」的訊息 Request to perform an external distributed computation has failed with error "Query canceled by user." 。

布料容量變更

每個工作區都有容量及相應的容量單位(CU),根據 你購買的 SKU 來決定。 自訂 SQL 池的突發容量取決於 SKU 大小。 所以,當你改變容量時,會影響每個自訂 SQL 池的最大資源量。

當你更改容量 SKU 大小或指派不同容量給工作區時,如果啟用自訂 SQL 池,它們會自動擴展到新的 SKU 大小。

若降頻強制將 SQL 池分配到零節點,執行時會顯示以下錯誤:「 本查詢所指派的 SQL 池無資源,必須重新配置。」 管理員必須重新設定自訂 SQL 池以移除此錯誤。

下一個步驟