tencent cloud

文档反馈

计算下推

最后更新时间:2022-03-02 22:31:31

    功能介绍

    该功能将单表查询的 LIMIT/OFFSET 或 SUM 操作下推到 InnoDB,有效降低查询时延。

    • LIMIT/OFFSET 下推到二级索引时,该功能将避免“回表”操作,有效降低扫描代价。
    • SUM 操作下推到 InnoDB 时,在 InnoDB 层进行计算返回“最终”结果,节省 Server 层和 InnoDB 引擎层多次迭代“每行”记录的代价。

    支持版本

    • LIMIT/OFFSET 优化对应内核版本 MySQL 5.7 20180530
    • SUM 操作下推优化对应内核版本 MySQL 5.7 20180918

    适用场景

    • 该功能主要针对单表查询下存在 LIMIT/OFFSET 或 SUM 的场景,如 Select *from tbl Limit 10”、“Select* from tbl Limit 10,2Select sum(c1) from tbl 等语句。
    • 无法优化的场景:
      • 查询语句存在 distinct、group by、having。
      • 存在嵌套子查询。
      • 使用了 FULLTEXT 索引。
      • 存在 order by 并且优化器不能利用 index 实现 order by。
      • 使用多范围的 MRR。
      • 存在 SQL_CALC_FOUND_ROWS。

    性能数据

    sysbench 导入一百万行数据后:

    • 执行 select * from sbtest1 limit 1000000,1; 的时间从6.3秒下降到2.8秒。
    • 执行 select sum(k) from sbtest1; 的时间从5.4秒下降到1.5秒。

    使用说明

    执行 SQL 过程中,根据相应功能控制参数的开关情况,查询优化器自动改写查询计划来完成计算下推的优化。
    参数如下:

    参数名 动态 类型 默认 参数值范围 说明
    cdb_enable_offset_pushdown Yes bool ON {ON,OFF} 控制 LIMIT/OFFSET 下推,默认开启
    cdb_enable_sumagg_pushdown Yes bool OFF {ON,OFF} 控制 SUM 下推,默认关闭
    说明:

    用户目前无法直接修改以上参数的参数值,如需修改可 提交工单 进行修改。

    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持