通过session设置
参数说明
session中NDP功能,默认为关闭状态,通过设置ndp_mode进行开启。
- 当ndp_mode=off时,表示关闭NDP。
- 当ndp_mode=on时,表示开启NDP。
- 当ndp_mode=replica_on时,表示在只读节点开启NDP,主机不生效。
当前NDP特性默认对大规格实例生效(16U及以上),小规格实例(8U及以下)不支持用户侧开启,如有需要可联系客服调整参数“innodb_ndp_max_threads”开启NDP。
在sql语句中执行开启或关闭NDP的语句。ndp的参数设置后,直到此会话结束或设置新的ndp参数值,否则一直处于此ndp有效期内。
语句是否会执行NDP操作,可以通过explain查看该语句是否使用NDP。在explain中的Extra中显示了NDP的下推执行计划,更具体的来说,NDP的执行计划通常以Using pushed NDP 为开头,后续内容说明了执行的NDP类型:过滤条件表达式(condition)、列裁剪(columns)或者是聚合(aggregate)被下推。
- Using pushed NDP condition,后续括号中的内容显示了被下推的过滤条件表达式。通常格式为(‘数据库名’,‘表名’,‘列名’ 谓词条件)。
- Using pushed NDP columns,显示NDP进行了列裁剪操作。
- Using pushed NDP aggregate,显示了NDP进行了聚合操作。
通过下面的示例中,可以发现当ndp_mode=ON时,表LINEITEM的条件l_receiptdate >= date '2021-8-30' 被下推到了存储层。
开启NDP
mysql> set ndp_mode=on;
下面的例子分别显示NDP执行类型:过滤条件表达式(condition)、列裁剪(columns)或者是聚合(aggregate)被下推:
关闭NDP
mysql> set ndp_mode=off;