隨著數據量的迅速增長,企業數據庫往往面臨著一個困局:復雜的分析查詢需要充分的資源來保證性能,但過多增加并行執行又會造成資源競爭,影響系統穩定性。傳統基于DBA人工干預的并行度調節機制,既低效又難以適應動態變化的負載需求。
再此背景下,Auto DOP(Automatic Degree of Parallelism,自動并行度)技術已成為新一代數據庫的必備能力之一。該技術通過實時分析查詢特征、數據量和系統資源狀況,實現智能資源調度能力——如同一位高效的"交通指揮官",動態調配最佳執行資源。無論是實時分析、AI模型訓練,還是混合負載管理和云資源優化,Auto DOP都能通過智能化并行處理,顯著提升企業數據處理效能。
本文將重點介紹在 OceanBase 數據庫中,Auto DOP 的核心參數、狀態監測及在 AP 場景、AP+TP 混布場景下的實踐,幫助數據庫破解資源爭用難題,實現復雜查詢毫秒級響應,保障系統穩定高效運行。
Auto DOP 核心參數解析
Auto DOP 在很大程度上解決了以往 DBA 需要手動設置并行度帶來的不便。在實際生產環境中,運用這一技術僅需兩步操作:
👉 首先,需要根據服務器的硬件性能,綜合考量可接受的復雜查詢對系統資源的占用比例,據此設置并行度上限,例如:set parallel_degree_limit = 32;
👉 然后,打開 Auto DOP:set parallel_degree_policy = AUTO。
在設置 Auto DOP 的過程中,有幾個關鍵參數,分別是資源管控參數 parallel_servers_target、parallel_degree_limit 以及執行優化層參數 parallel_min_scan_time_threshold。
1、parallel_servers_target
parallel_servers_target 屬于租戶級別的系統變量,它明確規定了租戶在每個節點上可申請的并行執行線程數量。其默認值是 MIN CPU * px_workers_per_cpu_quota。當這個參數指定的線程資源耗盡時,后續發起的并行執行請求需要進入排隊等待的狀態,直至有可用資源釋放。
2、parallel_degree_limit
parallel_degree_limit 主要用于約束 Auto DOP 開啟時,單條 SQL 語句所能達到的最大并行度,默認值為 0。當這個參數為 0 時,系統會自動借助 CPU 資源狀況和 parallel_servers_target 的設定,共同限制最大 DOP 值。
例如,當 parallel_degree_limit = 0 時,若 parallel_servers_target = 10,且通過 OceanBase.V$OB_UNITS 查詢得知 min_cpu = 2,同時單條 SQL 查詢所讀取的兩個分區分布在 2 臺?OBServer?上,那么經過計算,該場景下最大可用 DOP 為 min(10, 2 * 2) = 4。
3、parallel_min_scan_time_threshold
parallel_min_scan_time_threshold 以毫秒(為單位ms),默認值設置為 1000 ms,該參數對并行度的調整有著直接影響。具體來說,當基表的掃描代價高于該參數設定的值時,系統就會自動開啟并行處理模式。
假如適當調小 parallel_min_scan_time_threshold 的值,可以降低基表開啟并行處理的門檻,使得評估執行時間更短的基表掃描也能被納入并行處理范疇。對于已經處于并行處理狀態且數據量固定的表,也會相應地提升并行度,采用更大規模的并行掃描策略,以進一步優化處理效率。例如:
Auto DOP 執行狀態監測
在實際應用過程中,準確監測 Auto DOP 的執行狀態對于開發者優化數據庫性能、精準定位問題至關重要。OceanBase 提供了系統視圖特征碼解析以及內置 XPlan 工具包這兩大工具,助力開發者快速鎖定并行策略的執行軌跡,實現對資源調度的精準驗證。
方法一:通過查詢 $OB_PLAN_CACHE_PLAN_STAT 中的 OUTLINE_DATA 字段,判斷其中是否包含 PARALLEL(AUTO) ,以此來確定相關執行策略是否啟用了 Auto DOP。
方法二:通過 explain extended 指令或使用 dbms_xplan.display_cursor(強烈推薦開發者體驗,該函數在分析性能問題方面效果顯著),同樣能夠獲取關于 Auto DOP 執行狀態的詳細信息。
Auto DOP 最佳場景實踐
1、AP 場景
在純 AP 場景下,業務需求主要聚焦于運行少量極為復雜的大查詢,幾乎不存在急需優先處理的 DML 操作以及小查詢任務。此時,運用 Auto DOP 的方法極為簡便:
第一步,結合服務器硬件性能,綜合權衡可接受的復雜查詢對資源的占用比重,設置合理的并行度上限。例如:set parallel_degree_limit = 32;
第二步,輕松開啟 Auto DOP 功能:set parallel_degree_policy = AUTO;
2、AP+TP 混布場景
在 AP+TP 混布的復雜場景中,Auto DOP 旨在優化慢 SQL 的 RT(run time),但這一過程不可避免地會占用更多的線程資源,可能會引發少量 AP 大查詢和大量 TP 小查詢(小 DML)之間的資源爭用。AP 慢查詢如果借助 Auto DOP 開啟大量線程并行執行,會在一定程度上擠壓分配給小查詢的系統資源。
Auto DOP 并非萬能,它本身無法自動感知用戶心中對 SQL 優先級的設定,因此需要人為介入,明確告知數據庫不同 SQL 的優先級。具體解決方法是在租戶內部,為小查詢和大查詢分別規劃獨立的資源組,巧妙借助資源組(resource group)實現資源隔離。
OceanBase 在租戶內支持 User 級和 SQL 級兩種粒度的資源隔離方式。通過靈活配置各個 Resource Group 的 Max CPU 參數,即可實現讓不同 User 或者不同類型的 SQL 按需使用不同資源組的資源,有效緩解資源競爭壓力,保障各類業務穩定、高效運行。
Auto DOP 技術構建了一套完整且高效的并行執行優化體系,無論是在純 AP 場景下對復雜查詢效率的極致追求,還是在 AP+TP 混布場景中巧妙化解資源爭用難題,Auto DOP 都展現出了卓越的性能優勢與強大的適應性。OceanBase 也將不斷優化產品技術細節,為企業數字化轉型的深入推進提供堅實有力的數據支撐!
5 月 17 日,OceanBase 將在廣州召開 2025 開發者大會,本屆大會以「當 SQL 遇見 AI」為主題,將重磅發布面向 AI 時代的一體化產品矩陣,并分享 TP、AP、KV 及 AI 能力的最新實踐成果。歡迎大家點擊下方鏈接,報名參會!
>>2025 OceanBase 開發者大會