JDBC 查询引擎配置
使用 JDBC 计算引擎执行查询时,可以在集群的 queryComputeUnits 中,为目标引擎的 connectionConfigs 配置结果行数、结果批次、连接池和连接检查参数。本页适用于 AIR 创建并管理连接池的 JDBC 查询引擎,例如 Doris、StarRocks。
这些参数属于集群连接配置,不通过 SET SESSION、SET GLOBAL 或 SQL Hint 设置。AIR 查询规划和物化改写等选项,见 引擎配置参数。
适用范围
- 先确认查询实际路由到的集群和查询引擎;多引擎集群的路由方式见 引擎选择路由指南。
- 数据源直接下推与集群计算引擎是不同执行路径。直接下推使用独立的 ComputeUnit 和数据源连接池,不会自动继承集群查询引擎的
connectionConfigs;修改本页参数不代表已修改直接下推查询。 - 表中列出当前 AIR 实现的默认值。显式配置优先于默认值,驱动能力和引擎适配可能进一步影响实际行为。
- 集群配置统一通过 AIR 后台页面修改。编辑时保留其他查询引擎、连接信息、队列路由及元数据同步等原有配置,只调整目标参数。
配置位置与修改步骤
页面入口
使用有集群管理权限的管理员账号(aloudata_admin)进入 控制中心 → 集群管理,选择目标环境,在目标集群的操作列点击 编辑,打开“编辑集群”窗口。
这里需要编辑集群 JSON;集群详情中的“配置”页签用于其他引擎选项,不是本页 connectionConfigs 参数的修改入口。
修改目标查询引擎
- 核对环境、集群 ID 和集群名称,确认这是查询实际使用的集群。
- 在“编辑集群”窗口中,找到
queryComputeUnits数组内的目标查询引擎,核对computeUnitName和engineType。 - 在该引擎的
connectionConfigs对象内增加或修改参数。例如,对 Doris 设置"maxRowsFromJdbcServer": "0"。 - 保留其他所有配置,确认 JSON 格式正确后点击 保存。
以下示例只展示配置层级和待增加的参数,应合并到页面加载的现有 JSON 中,不能用此片段替换完整集群配置。
{
"queryComputeUnits": [
{
"computeUnitName": "<compute_unit_name>",
"engineType": "DORIS",
"connectionConfigs": {
"maxRowsFromJdbcServer": "0"
}
}
]
}
修改前记录原参数值;已有版本可在集群的 版本 页面查看。不要删除其他查询引擎、连接参数或路由字段,不要将页面中的凭据复制到共享文档或日志。
生效与验证
- 保存成功后重新打开目标集群的“编辑集群”窗口,确认参数已保存在对应查询引擎中。
- 当前实现会广播集群更新并清理各节点的引擎缓存,后续查询使用新配置,通常无需重启 Tardis。更新会关闭旧引擎及其连接池,应在该集群没有运行中 JDBC 查询时操作。
- 使用相同 SQL 验证结果、耗时和底层引擎 Profile;配置保存成功不等于每条执行路径都使用了该配置。
回退时,在同一页面将参数恢复为原值并保存。需要恢复整个集群配置时,可在 版本 页面选择对应历史版本执行恢复,操作前核对该版本的其他配置变化。
结果集与批次参数
| 参数 | 默认值 | 单位 | 说明 |
|---|---|---|---|
maxRowsFromJdbcServer |
50000000 |
行 | JDBC Statement 的最大返回行数。0 表示取消这一层限制,不会取消 SQL 自身的 LIMIT。Doris 的缓存注意事项见下文。 |
maxFetchSizeFromJdbcServer |
1000 |
行 | 传给 JDBC 驱动的 Fetch Size 提示,不是结果总行数上限;是否分批拉取由驱动实现决定。部分引擎会覆盖该值。 |
maxBatchSize |
1000 |
行 | AIR 每次从内部结果队列取出的最大行数,也影响队列容量;当前队列容量为该值的两倍。应设置为正整数,增大会增加结果缓冲的内存需求。 |
maxConsumeDataTimeout |
120000 |
毫秒 | 内部结果队列读写的等待超时。结果生产方因队列满而等待超时,会失败并取消查询;它不是底层 SQL 执行超时或连接池等待超时。 |
集群 StarRocks 查询引擎和 MySQL 协议的数据源直接下推适配中,存在将 Fetch Size 覆盖为 Integer.MIN_VALUE 以启用驱动流式读取的处理。因此,修改 maxFetchSizeFromJdbcServer 后仍需核对实际引擎适配,不能仅凭配置值认定 JDBC 每批会拉取相同行数。
连接池参数
以下参数用于 AIR 为集群 JDBC 查询引擎创建的连接池。连接池按查询引擎实例在各 Tardis 节点上创建,maxTotalConnections 不是整个 AIR 集群的总连接数上限。
| 参数 | 默认值 | 单位 | 说明 |
|---|---|---|---|
maxTotalConnections |
100 |
个 | 单个连接池的最大活动连接数。增大前应核对底层引擎的并发承载能力。 |
initialSize |
5 |
个 | 连接池初始化时创建的连接数。 |
maxIdleConnections |
5 |
个 | 历史参数名;当前实际控制最小空闲连接数,对应 Druid 的 minIdle,不是最大空闲连接数。 |
maxWaitMillSeconds |
30000 |
毫秒 | 从连接池获取连接的最大等待时间;增加该值会延长等待,不会增加可用连接数。参数拼写中的 MillSeconds 需保持原样。 |
timeBetweenEvictionRunsMillis |
60000 |
毫秒 | 空闲连接检查周期。 |
minEvictableIdleTimeMillis |
300000 |
毫秒 | 空闲连接可被回收的最小空闲时间。 |
testWhileIdle |
true |
— | 获取连接时按空闲时间检查连接有效性。 |
keepAlive |
true |
— | 是否对保留的空闲连接进行保活。 |
validationQuery |
select 1 |
— | 连接有效性检查使用的 SQL,应确保目标引擎支持。 |
removeAbandoned |
true |
— | 是否回收长时间借出的连接,运行中的查询也可能受影响。 |
removeAbandonedTimeout |
7800 |
秒 | 长时间借出连接的回收阈值;启用回收时,应覆盖允许的最长查询时间及超时监控检查间隔。 |
breakAfterAcquireFailure |
true |
— | 连接创建失败达到重试条件后,是否停止该轮创建重试。 |
connectionErrorRetryAttempts |
2147483647 |
次 | 连接创建失败时使用的重试次数配置;与停止重试策略配合使用,不是 SQL 重试次数。 |
connectionErrorRetryInterval |
60000 |
毫秒 | 连接创建失败后的重试间隔配置,不是查询重试间隔。 |
Doris SQL Cache 与返回行数限制
现象与原因
Doris 已开启 SQL Cache,但从 AIR 重复执行相同 SQL 时仍执行扫描、聚合和连接,Profile 显示 Is Cached: No。此时除了检查 Doris 的缓存开关、表版本及缓存条件,还应检查查询实际连接的 sql_select_limit。
AIR 当前默认设置 JDBC 最大返回行数为 50000000。使用 MySQL Connector/J 时,这一设置会通过驱动转换为会话变量 sql_select_limit=50000000。
配置方法
对实际执行查询的 Doris 集群查询引擎,按本页步骤设置: