
# 通过session设置
#### 参数说明
session中NDP功能，默认为关闭状态，通过设置ndp_mode进行开启。
- 当ndp_mode=off时，表示关闭NDP。
- 当ndp_mode=on时，表示开启NDP。
- 当ndp_mode=replica_on时，表示在只读节点开启NDP，主机不生效。
  ![](https://support.huaweicloud.com/kerneldesc-taurusdb/public_sys-resources/note_3.0-zh-cn.png)
  当前NDP特性默认对大规格实例生效（16U及以上），小规格实例（8U及以下）不支持用户侧开启。
  
在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)被下推：
- 过滤条件表达式下推（Using pushed NDP condition） ![](https://support.huaweicloud.com/kerneldesc-taurusdb/figure/zh-cn_image_0000002174412449.png "点击放大")
  
- 列裁剪（Using pushed NDP columns） ![](https://support.huaweicloud.com/kerneldesc-taurusdb/figure/zh-cn_image_0000002174254029.png "点击放大")
  
- 聚合下推（Using pushed NDP aggregate） ![](https://support.huaweicloud.com/kerneldesc-taurusdb/figure/zh-cn_image_0000002138972924.png "点击放大")
  
 
#### 关闭NDP
**mysql\> set ndp_mode=off;**
![](https://support.huaweicloud.com/kerneldesc-taurusdb/figure/zh-cn_image_0000002138974814.png "点击放大")
