联 系 我 们
售前咨询
售后咨询
微信关注:星环科技服务号
更多联系方式 >
11.9.3 SQL 执行模式说明
更新时间:1/20/2025, 2:20:20 AM

ArgoDB 中执行 SQL 语句时,支持不同的执行模式,较为常用的执行模式为 ClusterLocal 模式,在 ArgoDB 6.0 及以上版本中,我们还新增了 Localfast 。您可以通过登录 DBAService 查看 SQL 语句的具体执行模式。

下面我们依次向您介绍这四种执行模式的生效方式、适用场景、相关注意事项以及四种执行模式的对比情况。

Cluster 模式(默认模式)

定义及适用场景

Cluster 模式为 SQL 默认执行模式,该模式下结果集先落地缓存,然后客户端可以直接从缓存中读取,一般适用于大任务高吞吐的批处理业务场景。

Cluster 模式的实现逻辑是通过 Quark Server 将 SQL 转换成 Job 分发到各个节点的 Executor,并由 Task 具体处理,各个 Task 将结果汇总并输出。

设置方式

通过设置 Quark 参数 ngmr.exec.mode = cluster 生效。

Cluster 和 Local 模式的自动切换机制
  • 参数 ngmr.dd.local.mode.auto 控制是否允许 system 表自动切换为 Local 模式,默认为 true 表示允许自动切换。

  • 在同时满足 ngmr.exec.mode = clusterngmr.dd.local.mode.auto=true 时,使用 SQL 命令查询 system 表会自动切换为 Local 执行模式。

Local 模式

定义及适用场景

Local 模式下,结果数据集直接返回给客户端。一般适用于低延时、高并发、参与计算数据量少的场景,如:

  • 通过 Lookup Join 实现 JOIN 的场景,适用于大表为 Hyperbase 表的情况。

  • HBaseTransactionStorageHandler 的 CRUD 操作。

  • ORC 事务表的 INSERT 或者 BATCHINSERT。

设置方式

通过设置 Quark 参数 ngmr.exec.mode = local 生效。

使用边界及注意事项

  • Local 模式支持不启动 executor 读 ArgoDB 数据源,能够满足使用者对于灵活性的需求。

  • Linac 引擎不支持 local 模式,建议使用 Localfast 模式

  • 在满足条件下,查询 system 系统表时,会从 Cluster 模式自动切换成 Local 模式

LocalFast 模式

定义及适用场景

LocalFast 通过在 Quark Server 生成与 Cluster 模式接近的分布式执行计划,并在 Quark Server 内多线程执行,因此能实现更快的响应速度,但也要求数据量不能过多。

LocalFast 模式的核心优化是在表扫描阶段支持并发多个 task,利用多线程和并行处理的优势,使得单机执行效率更高,适用于 OLAP 及高并发查询场景

设置方式

  • 设置 Quark 参数,开启 ngmr 引擎下的 localfast 模式:

    • 关闭 windrunner 向量化执行引擎:ngmr.windrunner.enabled=false

    • 开启 localfast 模式:ngmr.local.fast.enabled=true

  • 设置 Quark 参数,开启 Linac 引擎下的 linac-localfast 模式:

    • 开启 Linac 计算引擎:use.linac=true

    • 开启 windrunner 向量化执行引擎 ngmr.windrunner.enabled=true

    • 开启 localfast 模式:ngmr.local.fast.enabled=true

使用边界及注意事项

  • localfast 模式优先级最高,即只要开启 localfast 模式功能,参数 ngmr.exec.mode 自动失效。

  • localfast 模式下,存在使用限制:

    • 过滤后的数据推荐在 10W 以内,最多不超过 100W

    • 查询超时默认为 60 秒,可通过 ngmr.local.fast.exec.timeout 控制(单位毫秒)

    • Linac 暂时没有限制过滤后的数据集条目数(Doing),WR 超过特定数据集会报错

执行模式对比
模式 结果集存储 结果集大小 执行计划 支持的 Join 计算引擎 数据量限制

Cluster

HDFS 临时目录

超过 1500w 有很大概率返回数据超时

集群,多线程执行

LoopUp Join、Common Join、Bucket Join、Map Join(Filter Join)

ngmr、Linac

无上限,推荐 > 1 百万

Local

Server 内存

< 30w

单机,单线程执行

LookUp Join

ngmr

< 1 百万

Localfast

Server 内存

< 30w

单机,多线程执行

LookUp Join、Common Join、Bucket Join

ngmr、Linac

< 1 亿