跳转至

JDBC 查询引擎配置

使用 JDBC 计算引擎执行查询时,可以在集群的 queryComputeUnits 中,为目标引擎的 connectionConfigs 配置结果行数、结果批次、连接池和连接检查参数。本页适用于 AIR 创建并管理连接池的 JDBC 查询引擎,例如 Doris、StarRocks。

这些参数属于集群连接配置,不通过 SET SESSION、SET GLOBAL 或 SQL Hint 设置。AIR 查询规划和物化改写等选项,见 引擎配置参数。

适用范围

  • 先确认查询实际路由到的集群和查询引擎;多引擎集群的路由方式见 引擎选择路由指南。
  • 数据源直接下推与集群计算引擎是不同执行路径。直接下推使用独立的 ComputeUnit 和数据源连接池,不会自动继承集群查询引擎的 connectionConfigs;修改本页参数不代表已修改直接下推查询。
  • 表中列出当前 AIR 实现的默认值。显式配置优先于默认值,驱动能力和引擎适配可能进一步影响实际行为。
  • 集群配置统一通过 AIR 后台页面修改。编辑时保留其他查询引擎、连接信息、队列路由及元数据同步等原有配置,只调整目标参数。

配置位置与修改步骤

页面入口

使用有集群管理权限的管理员账号(aloudata_admin)进入 控制中心 → 集群管理,选择目标环境,在目标集群的操作列点击 编辑,打开“编辑集群”窗口。

这里需要编辑集群 JSON;集群详情中的“配置”页签用于其他引擎选项,不是本页 connectionConfigs 参数的修改入口。

修改目标查询引擎

  1. 核对环境、集群 ID 和集群名称,确认这是查询实际使用的集群。
  2. 在“编辑集群”窗口中,找到 queryComputeUnits 数组内的目标查询引擎,核对 computeUnitName 和 engineType。
  3. 在该引擎的 connectionConfigs 对象内增加或修改参数。例如,对 Doris 设置 "maxRowsFromJdbcServer": "0"。
  4. 保留其他所有配置,确认 JSON 格式正确后点击 保存。

以下示例只展示配置层级和待增加的参数,应合并到页面加载的现有 JSON 中,不能用此片段替换完整集群配置。

{
  "queryComputeUnits": [
    {
      "computeUnitName": "<compute_unit_name>",
      "engineType": "DORIS",
      "connectionConfigs": {
        "maxRowsFromJdbcServer": "0"
      }
    }
  ]
}

修改前记录原参数值;已有版本可在集群的 版本 页面查看。不要删除其他查询引擎、连接参数或路由字段,不要将页面中的凭据复制到共享文档或日志。

生效与验证

  1. 保存成功后重新打开目标集群的“编辑集群”窗口,确认参数已保存在对应查询引擎中。
  2. 当前实现会广播集群更新并清理各节点的引擎缓存,后续查询使用新配置,通常无需重启 Tardis。更新会关闭旧引擎及其连接池,应在该集群没有运行中 JDBC 查询时操作。
  3. 使用相同 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 集群查询引擎,按本页步骤设置:

{
  "maxRowsFromJdbcServer": "0"
}