暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

谓词完全下推

芬芳 2023-06-25
192

当需要查询大量数据的时候,引擎层访问数据、SQL层的交互和计算都会占用大量的开销。PolarDB MySQL版会将谓词下推到引擎层进行计算,极大的减少性能开销,提升查询性能。

前提条件

集群版本需为PolarDB MySQL版8.0版本且修订版本需满足如下条件:
8.0.1.1.5或以上。
8.0.2.2.0 或以上。

使用限制

查询SQL中的Offset取值要大于512。

您可以配置ignore_polar_optimizer_rule为ON,忽略该限制。

使用方法

通过系统参数loose_optimizer_switch中的detach_range_condition开启谓词完全下推优化功能。
image.png

示例

本文基于TPCH的Schema进行举例。关闭谓词完全下推功能后,Q2的执行计划如下。可以看到关闭谓词完全下推功能后,Extra列展示为Using where,即体现在引擎范围中的条件依然保留着。

set @@optimizer_switch='detach_range_condition=off';
EXPLAIN SELECT * FROM lineitem WHERE l_orderkey > 10 AND l_orderkey < 60000000 LIMIT 10000000, 10\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: lineitem
   partitions: NULL
         type: range
possible_keys: PRIMARY,i_l_orderkey,i_l_orderkey_quantity
          key: PRIMARY
      key_len: 4
          ref: NULL
         rows: 29720232
     filtered: 100.00
        Extra: Using where

设置变量ignore_polar_optimizer_rule为ON,除Limit Offset场景外,其他范围查询体现在引擎范围中的谓词也可以被消除。以TPCH的Q5和Q6为例,设置ignore_polar_optimizer_rule为ON后,可以消除谓词。Extra列仅显示为Using index,不再显示Using where。

  • Q5:
set @@ignore_polar_optimizer_rule=on;
EXPLAIN SELECT COUNT(*) FROM lineitem WHERE l_suppkey > 10 AND l_suppkey < 50000\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: lineitem
   partitions: NULL
         type: range
possible_keys: i_l_suppkey_partkey,i_l_suppkey
          key: i_l_suppkey
      key_len: 5
          ref: NULL
         rows: 29720232
     filtered: 100.00
        Extra: Using index
  • Q6:
set @@ignore_polar_optimizer_rule=on;
EXPLAIN SELECT COUNT(*) FROM LINEITEM WHERE l_receiptDATE > '1992-01-03' AND l_receiptDATE < '1994-12-31'\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: LINEITEM
   partitions: NULL
         type: range
possible_keys: i_l_receiptdate
          key: i_l_receiptdate
      key_len: 4
          ref: NULL
         rows: 29720232
     filtered: 100.00
        Extra: Using index
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论