查詢加速MaxQA(MaxCompute Query Accelerator)引擎旨在實現近即時情境下的查詢效能最佳化,能夠在獨享的查詢計算資源集區中,對管控鏈路、查詢最佳化工具、執行引擎、儲存引擎以及緩衝機制等多個環節進行全面最佳化,適用於BI情境、互動式分析以及近即時數倉等低延遲高穩定的業務情境。本文將詳細介紹MaxQA引擎的使用方法。
開服說明
各地區正式商業化時間
地區 | 公測開始時間 | 正式商業化時間 |
華東1(杭州) | 2025年2月17日 | 2025年11月24日 |
華東2(上海) | ||
華北2(北京) | ||
華南1(深圳) | ||
華北6(烏蘭察布) | ||
中國香港 | 2025年03月05日 | 2025年11月27日 |
日本(東京) | 2025年03月05日 | |
新加坡 | 2025年03月20日 | |
印尼(雅加達) | ||
德國(法蘭克福) | 2025年03月31日 | |
美國(矽谷) | ||
美國(維吉尼亞) |
注意事項
新建立的互動式Quota組將預設為MaxQA模式,已開通的存量MCQA不受影響。
MaxQA基礎操作
MaxQA執行個體開通
目前僅支援在訂用帳戶MaxCompute專案中使用MaxQA功能,具體操作如下:
登入MaxCompute控制台,在左上方選擇地區。
在左側導覽列,選擇 。
在Quota管理頁面,單擊目標Quota對應操作列的Quota配置。
基礎配置
在Quota配置頁面,選擇基础配置頁簽,單擊编辑基础配置。
單擊新增二级Quota,填寫Quota名称並選擇类型為交互式。
後續使用MaxQA時,需要指定Quota名称,建議和業務屬性相關,便於區分多個執行個體。
交互式是專用於跑查詢加速(MCQA)作業的Quota。
單擊确定。
開通之後,對應互動式配額組的最後部分會出現狀態展示為启动中,請等待5~8分鐘,待狀態變更為运行中後,即可開始使用。
MaxQA執行個體刪除
在Quota管理頁面,單擊目標Quota對應操作列的Quota配置。
在Quota配置頁面,選擇基础配置頁簽,單擊目標互動式Quota操作列的删除。
後台將自動執行刪除操作,頁面上不顯示狀態更新和刪除進度。
MaxQA執行個體擴縮容
可根據業務需求為互動式配額組進行擴容或縮容,具體操作如下:
在Quota管理頁面,單擊目標Quota對應操作列的Quota配置。
在Quota配置頁面,選擇基础配置頁簽,單擊编辑基础配置。
單擊新增二级Quota,調整要擴容或縮容的互動式配額組的预留CU量[minCU,maxCU]。調大即為擴容,調小即為縮容。
說明CU量的最小變化步長為25。
最小CU量必須大於等於25。如果不需要互動式資源,設定為
0,或刪除對應Quota組。暫不支援為互動式類型的Quota設定弹性预留CU。
單擊确定。
完成調節互動式配額組預留CU量。
對應互動式配額組的操作列會顯示扩容中或缩容中,擴容預計耗時5~8分鐘,而縮容可能耗時更長,具體時間長度取決於當前正在運行作業的結束情況。在最壞的情況下,可能需要等待作業逾時,以確保在縮容操作開始之前,被縮容的機器上所有正在啟動並執行作業均已結束。擴容及縮容過程中,均不會影響作業的正常執行。
MaxQA分時伸縮規則配置
通過配置分時伸縮計劃可以完成定時擴縮容,具體操作如下:
在Quota管理頁面,單擊目標Quota對應操作列的Quota配置。
在Quota配置頁面,選擇伸缩配置頁簽。
分時伸縮配置
在伸缩配置頁簽,單擊新增配置方案,在彈出的新增配置方案對話方塊,填寫配置方案名称,並為二級Quota配置预留CU量[minCU,maxCU]。
若修改已有配置方案:
在伸缩配置頁簽,單擊目標配置方案對應的操作列的编辑,更新配置方案。
配置分時計劃
在伸缩配置頁簽,單擊分时管理地區的编辑时间计划。
單擊新增生效时间段,選擇生效開始時間和配置方案计划。
設定每日不同時間點啟用不同的Quota配置方案,以此實現對Quota配置的分時管理。詳細操作請參見計算資源-Quota管理。
調度策略
提交作業時需要在用戶端、JDBC串連串上顯式指定互動式Quota組的名字,相應作業會被調度到對應的MaxQA執行個體中執行。
回退策略
MaxQA不支援自動回退的策略。如果因使用限制或其它原因發生MaxQA作業失敗,需要主動再次提交或提交到批處理配額組中。
MaxQA功能接入方式
MaxQA功能支援的接入方式如下:
基於MaxCompute用戶端啟用MaxQA功能
安裝並配置V0.51.1及以上版本的MaxCompute用戶端(odpscmd),詳情請參見使用本地用戶端(odpscmd)串連。
(可選)修改用戶端安裝目錄
conf下的odps_config.ini檔案,在檔案最後一行增加如下命令。-- 開啟MaxQA 串連資訊緩衝功能。 enable_quota_cache=true運行安裝目錄
bin下的指令檔,啟動MaxCompute用戶端。重要Linux/macOS系統:運行
odpscmd指令檔。Windows系統:雙擊
odpscmd.bat檔案。
運行作業前請執行以下命令,後續用戶端提交的作業都將使用MaxQA模式,在互動式Quota組所對應的MaxQA執行個體中運行。
USE QUOTA <互動式Quota組的名稱>;還可通過如下方式,在Session層級指明當前作業要提交的MaxQA執行個體。
SET odps.task.wlm.quota=<互動式Quota組的名稱>;
基於DataWorks資料開發啟用MaxQA功能
僅參加新版資料開發公測的工作空間支援MaxQA功能。若使用舊版資料開發,需升級至新版資料開發,才能正常使用MaxQA功能。詳情請參見啟用新版資料開發(Data Studio)。
登入DataWorks控制台,在左上方選擇地區。
在左側導覽列選擇。
选择工作空间,單擊進入Data Studio。
在資料開發頁面,單擊右側調試配置。
在調試配置頁面,計算資源選擇綁定的MaxCompute專案資源,計算配額選擇互動式配置組。
完成後,SQL節點執行的作業將會被調度到互動式配額組對應的MaxQA執行個體中運行。

具體操作步驟,詳情請參見DataWorks建立MaxCompute SQL節點。
基於MaxCompute控制台SQL分析啟動MaxQA功能
登入MaxCompute控制台,在左上方選擇地區。
在左側導覽列,選擇。
在SQL代碼編輯框輸入SQL後,單擊右側運行參數,配置專案和計算配額。
選擇互動式配額組對應的計算資源。
配置完成後,SQL分析頁面執行的作業將會被調度到互動式配額組對應的MaxQA執行個體中運行。
具體操作步驟,詳情請參見SQL分析。
基於MaxCompute Studio使用MaxQA功能
需要確認已安裝MaxCompute Studio,並完成對MaxCompute專案的串連。再通過MaxCompute Studio執行指令碼來使用MaxQA功能。具體操作如下:
已安裝並配置MaxCompute Studio 4.3.2及以上版本,詳情請參見安裝MaxCompute Studio。
建立新的MaxCompute Studio專案,並與MaxCompute專案進行串連。詳情請參見管理專案串連。
在已建立的專案中建立新的MaxCompute SQL指令碼。詳情請參見開發及提交SQL指令碼。
在MaxCompute SQL指令碼中輸入SQL Script語句,在執行模式中下拉選擇MaxQA選項。
單擊指定額外參數
按鈕,填寫MaxQA Quota名稱,單擊確定完成。運行指令碼。該作業使用MaxQA查詢加速功能。
基於JDBC啟用MaxQA功能
使用JDBC串連MaxCompute,可以通過執行如下操作開啟MaxQA功能。使用JDBC串連MaxCompute的操作詳情請參見使用說明。
下載支援MaxQA功能的或可編譯的原始碼。
通過Maven方式配置Pom依賴。
<dependency> <groupId>com.aliyun.odps</groupId> <artifactId>odps-jdbc</artifactId> <version>${Latest Version}</version> </dependency>重要上述代碼中的
Latest Version是一個預留位置,需要將其替換為具體的SDK版本號碼才能成功編譯專案。訪問Maven Central Repository查看所有發行的odps-jdbc版本。建議使用最新版本,版本號碼格式為 X.X.X。基於原始碼建立Java程式,適配實際資訊,詳情請參見MaxCompute JDBC,樣本如下。
import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class MaxCompute { private static final String DRIVER_NAME = "com.aliyun.odps.jdbc.OdpsDriver"; // 阿里雲帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議建立並使用RAM使用者進行API訪問或日常營運,請登入RAM控制台建立RAM使用者。 // 此處以把AccessKey和AccessKeySecret儲存在環境變數為例說明。也可以根據業務需要,儲存到設定檔裡。 // 強烈建議不要把AccessKey和AccessKeySecret儲存到代碼裡,會存在密鑰泄漏風險。 private static String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); private static String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); public static void main(String[] args) throws SQLException { try { Class.forName(DRIVER_NAME); } catch (ClassNotFoundException e) { e.printStackTrace(); System.exit(1); } Connection conn = DriverManager.getConnection( "jdbc:odps:https://service.cn-hangzhou.maxcompute.aliyun.com/api?project=maxqatomax&charset=UTF-8&interactiveMode=true"aName=maxfor1&autoSelectLimit=1000000000", MaxCompute.accessId, MaxCompute.accessKey); // create a table Statement stmt = conn.createStatement(); final String tableName = "jdbc_test11"; stmt.execute("DROP TABLE IF EXISTS " + tableName); stmt.execute("CREATE TABLE " + tableName + " (key BIGINT, value STRING)"); // get meta data DatabaseMetaData metaData = conn.getMetaData(); System.out.println("product = " + metaData.getDatabaseProductName()); System.out.println("jdbc version = " + metaData.getDriverMajorVersion() + ", " + metaData.getDriverMinorVersion()); ResultSet tables = metaData.getTables(null, "default", tableName, null); while (tables.next()) { String name = tables.getString("TABLE_NAME"); System.out.println("inspecting table: " + name); ResultSet columns = metaData.getColumns(null, null, name, null); while (columns.next()) { System.out.println( columns.getString("COLUMN_NAME") + "\t" + columns.getString("TYPE_NAME") + "(" + columns.getInt("DATA_TYPE") + ")"); } columns.close(); } tables.close(); stmt.close(); conn.close(); } }
JDBC串連串配置樣本。
//your_quota_nick_name為期望使用的互動式 Quota 組的名字
jdbc:odps:<MaxCompute_endpoint>?
project=<MaxCompute_project_name>&interactiveMode=true"aName=your_quota_nick_name&enableLimit=false&enableOdpsLogger=true"參數 | 說明 |
MaxCompute_endpoint | MaxCompute服務所在地區的Endpoint,詳情請參見Endpoint。 |
MaxCompute_project_name | MaxCompute專案空間名稱。 |
interactiveMode | MaxQA功能開關, |
quotaName | 期望使用的互動式Quota組名字 |
enableLimit | 允許下載超過 10000 條資料 |
enableOdpsLogger | 用於列印日誌。未配置SLF4J時,建議將此參數配置為True。 |
基於BI分析工具串連MaxQA
可通過Tableau、Quick BI、觀遠BI、SQLWorkBench串連MaxQA,具體操作如下。
Tableau串連MaxQA
伺服器URL路徑增加interactiveMode=true屬性和quotaName=your_quota_nick_name屬性,用於開啟MaxQA功能。建議同步增加enableOdpsLogger=true屬性,用於列印日誌。具體操作步驟,詳情請參見配置JDBC使用Tableau。
URL格式:
<MaxCompute_endpoint>?project=<MaxCompute_project_name>&charset=UTF-8&interactiveMode=true"aName=<your_quota_nick_name>&autoSelectLimit=1000000000參數
是否必填
說明
MaxCompute_endpoint
是
MaxCompute服務所在地區的Endpoint,詳情請參見Endpoint。杭州地區如:
https://service.cn-hangzhou.maxcompute.aliyun.com/api。MaxCompute_project_name
是
MaxCompute專案名稱,如
maxqatomax。your_quota_nick_name
是
期望使用的互動式Quota組的名稱,如
maxfor1。
URL樣本:
https://service.cn-hangzhou.maxcompute.aliyun.com/api?project=maxqatomax&charset=UTF-8&interactiveMode=true"aName=maxfor1&autoSelectLimit=1000000000
Quick BI串連MaxQA
登入QuickBI控制台。
在左側導覽列選擇資料來源,單擊右上方建立資料來源。
在建立資料來源頁面選擇MaxCompute。
在配置串連頁面中,Quota計算資源群組填寫MaxQA Quota計算資源名稱,開啟MaxQA功能並使用MaxQA計算資源。詳情請參見Quick BI串連MaxCompute。
樣本如下,maxqa為MaxQA Quota名稱:

觀遠BI串連MaxQA
新增驅動。
上傳V3.8.5及以上版本的MaxCompute JDBC Driver至觀遠BI。詳情請參見MaxCompute JDBC及Release Note。
在觀遠BI右上方單擊
表徵圖,進入管理中心。單擊系統設定>通用設定,並切換至驅動與連接器頁面。
在驅動管理頁簽單擊新增驅動後,編輯驅動名稱並儲存。
單擊新增的驅動名稱,在驅動列表處單擊上傳檔案,上傳MaxCompute JDBC Driver,然後選擇驅動為com.aliyun.odps.jdbc.OdpsDriver,單擊應用即可。
建立資料賬戶,通過MaxQA方式串連MaxCompute資料來源。
單擊頂部功能表列的資料準備。
在頁面左側選擇資料賬戶頁簽,並在右上方單擊建立資料賬戶,根據頁面指引配置賬戶資訊。
參數
說明
選擇連接器
選擇MaxCompute。
配置資料賬戶
串連方式
選擇JDBC URL。
登入ID
阿里雲帳號的AccessKey ID。
登入Key
阿里雲帳號對應的AccessKey Secret。
JDBC URL
針對MaxQA定製的JDBC串連串,URL格式為:
jdbc:odps:<maxcompute_endpoint>?project=<maxcompute_projectName>&charset=UTF-8&interactiveMode=true"aName=<your_quota_nickName>&autoSelectLimit=1000000000。參數說明如下:
maxcompute_endpoint:MaxCompute服務所在地區的Endpoint,詳情請參見Endpoint。杭州地區如:https://service.cn-hangzhou.maxcompute.aliyun.com/api。maxcompute_projectName:MaxCompute專案名稱,如maxqatomax。your_quota_nickName:期望使用的互動式Quota組的名稱,如maxfor1。互動式Quota組的建立詳情,請參見計算資源-Quota管理。
URL樣本如下:
jdbc:odps:https://service.cn-hangzhou.maxcompute.aliyun.com/api?project=maxqatomax&charset=UTF-8&interactiveMode=true"aName=maxfor1&autoSelectLimit=1000000000SQL版本
選擇2.0/hive相容模式。
最大串連數
預設16。
驅動
選擇自訂,然後選擇上述已建立的驅動。
單擊測試連接,顯示串連成功後,單擊下一步。
確認資料賬戶資訊,自訂輸入顯示名稱,單擊確認建立即可。
SQLWorkBench串連MaxQA
在Profile配置介面修改已填寫的JDBC URL,支援SQLWorkbench使用MaxQA功能。具體操作詳情請參見配置JDBC使用SQL Workbench/J。
URL格式:
jdbc:odps:<MaxCompute_endpoint>? project=<MaxCompute_project_name>&charset=UTF-8&interactiveMode=true"aName=<your_quota_nick_name>&autoSelectLimit=1000000000"參數
是否必填
說明
MaxCompute_endpoint
是
MaxCompute服務所在地區的Endpoint,詳情請參見Endpoint。杭州地區如:
https://service.cn-hangzhou.maxcompute.aliyun.com/api。MaxCompute_project_name
是
MaxCompute專案名稱,如
maxqatomax。your_quota_nick_name
是
期望使用的互動式Quota組的名稱,如
maxfor1。URL樣本:
jdbc:odps:https://service.cn-hangzhou.maxcompute.aliyun.com/api?project=maxqatomax&charset=UTF-8&interactiveMode=true"aName=maxfor1&autoSelectLimit=1000000000
基於Java SDK啟用MaxQA功能
Java SDK詳情請參見Java SDK介紹。
通過Maven配置Pom依賴,配置樣本如下。
<dependency> <groupId>com.aliyun.odps</groupId> <artifactId>odps-sdk-core</artifactId> <version>${Latest Version}</version> </dependency>重要上述代碼中的
Latest Version是一個預留位置,需要將其替換為具體的SDK版本號碼才能成功編譯專案。訪問Maven Central Repository查看所有發行的odps-sdk-core版本。建議使用最新版本,版本號碼格式為 X.X.X-public。建立Java程式,命令樣本如下。
import com.aliyun.odps.Odps; import com.aliyun.odps.OdpsException; import com.aliyun.odps.account.Account; import com.aliyun.odps.account.AliyunAccount; import com.aliyun.odps.sqa.ExecuteMode; import com.aliyun.odps.sqa.SQLExecutor; import com.aliyun.odps.sqa.SQLExecutorBuilder; import java.util.HashMap; import java.util.Map; public class MaxCompute { public static void main(String args[]) { // 設定帳號和專案資訊。 // 阿里雲帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議建立並使用RAM使用者進行API訪問或日常營運,請登入RAM控制台建立RAM使用者。 // 此處以把AccessKey 和 AccessKeySecret 儲存在環境變數為例說明。也可以根據業務需要,儲存到設定檔裡。 // 強烈建議不要把 AccessKey 和 AccessKeySecret 儲存到代碼裡,會存在密鑰泄漏風險。 Account account = new AliyunAccount(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); Odps odps = new Odps(account); odps.setDefaultProject("maxqatomax"); odps.setEndpoint("https://service.cn-hangzhou.maxcompute.aliyun.com/api"); // 準備構建SQLExecutor。 SQLExecutorBuilder builder = SQLExecutorBuilder.builder(); SQLExecutor sqlExecutor = null; try { // 建立一個預設使用 MCQA2.0 模式的Executor。 sqlExecutor = builder.odps(odps) .executeMode(ExecuteMode.INTERACTIVE) .quotaName("maxfor1") .enableMcqaV2(true) .build(); // 如果需要的話可以傳入查詢的特殊設定。 Map<String, String> queryHint = new HashMap<>(); queryHint.put("odps.sql.mapper.split.size", "128"); // 提交一個查詢作業,支援傳入Hint。 sqlExecutor.run("select count(1) from test_table;", queryHint); // 當前查詢作業的logview。 System.out.println("Logview:" + sqlExecutor.getLogView()); // 當前查詢作業的InstanceId System.out.println("InstanceId:" + sqlExecutor.getQueryId()); } catch (OdpsException e) { e.printStackTrace(); } finally { if (sqlExecutor != null) { // 關閉Executor釋放相關資源。 sqlExecutor.close(); } } } }
基於PyODPS使用MaxQA功能
PyODPS從V0.12.1版本開始支援MaxQA功能,範例程式碼如下。
import os
from odps import ODPS
# 設定帳號和專案資訊
# 確保 ALIBABA_CLOUD_ACCESS_KEY_ID 環境變數設定為使用者 Access Key ID,
# ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境變數設定為使用者 Access Key Secret,
# 不建議直接使用 Access Key ID / Access Key Secret 字串
o = ODPS(
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
project='maxto****',
endpoint='https://service.cn-hangzhou.maxcompute.aliyun.com/api',
)
# 如果需要的話可以傳入查詢的特殊設定
hints = {"odps.sql.mapper.split.size": "128"}
inst = o.execute_sql_interactive(
'select count(1) from test_table',
use_mcqa_v2=True,
quota_name='maxfor1',
# quota_name 設定為 MaxQA 執行個體所對應的互動式 Quota 組名字
hints=hints,
)
# 當前查詢作業的logview
print(inst.get_logview_address())
# 當前查詢作業的InstanceId
print(inst.id)
# 按行讀取資料
with inst.open_reader() as reader:
result = [res.values for res in reader]基於PyODPS使用SQLAlchemy或其他支援SQLAlchemy介面的第三方工具實現查詢加速
PyODPS 0.12.2版本起可以使用SQLAlchemy通過MaxQA查詢MaxCompute資料。需要在串連串中指定如下參數。
參數 | 是否必填 | 說明 |
interactive_mode=v2 | 是 | 查詢加速功能總開關。 |
quota_name=<YOUR_INTERACTIVE_QUOTA_NICKNAME> | 是 | 互動式Quota名稱。 |
reuse_odps=true | 否 | 開啟強制複用串連,對於部分第三方工具(例如Apache Superset),開啟此選項可提高效能。 |
例如,下述連接字串開啟MaxQA並開啟強制複用連結。
odps://<access_id>:<ACCESS_KEY>@<project>/?endpoint=<endpoint>"a_name=<YOUR_INTERACTIVE_QUOTA_NICKNAME>&interactive_mode=v2&reuse_odps=true確認作業是否啟用MaxQA模式
從Logview判斷
可以在作業執行完成後,進入LogView頁面,通過以下三處來確認作業是否啟用MaxQA模式。
通過MaxCompute InstanceId尾碼是否以_mcqa結尾。
通過Quota Nickname是否是指定的互動式Quota名稱。
在Summary頁簽,查看Job run mode是否是mcqa 2.0。

從TopConsole的可觀測頁面判斷
登入MaxCompute控制台,在左上方選擇地區。
在左側導覽列,選擇。
在作业运维頁面,單擊普通列表頁簽,篩選作业类型為MCQA2,查看指定时间范围內的MaxQA類型作業。