
# SMP使用建议
根据上面的分析，总结如下：
#### 使用限制
想要利用SMP提升查询性能需要满足以下条件：系统的CPU、内存、I/O和网络带宽等资源充足。
SMP架构是一种利用富余资源来换取时间的方案，计划并行之后必定会引起资源消耗的增加，当上述资源成为瓶颈的情况下，SMP无法提升性能，反而可能导致性能的劣化。在出现资源瓶颈的情况下，建议关闭SMP。
 #### 配置步骤
1. 观察当前系统负载情况，如果系统资源充足（资源利用率小于50%），执行[2]；否则退出。
2. 设置query_dop=1（默认值），利用explain打出执行计划，观察计划是否符合[SMP适用场景与限制](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-10-0390.html#ZH-CN_TOPIC_0000002659179691)小节中的适用场景。如果符合，进入下一步。
3. 设置query_dop=0（自适应），系统会根据资源情况和计划特征，动态为每个查询选取x86在\[1,8\]ARM在\[1,64\]之间的最优的并行度，最大化提升查询性能。
4. 设置query_dop=-value，在考虑资源情况和计划特征基础上，限制dop选取的范围为\[1,value\]。
5. 设置query_dop=value，不考虑资源情况和计划特征，强制选取dop为1或value。
6. 在符合条件的查询语句执行前设置合适的query_dop值，在语句执行结束后关闭query_dop。例如， 
   ```
   gaussdb=# SET query_dop = 0;
   gaussdb=# SELECT COUNT(*) FROM t1 GROUP BY a;
   ......
   gaussdb=# SET query_dop = 1;
   ```
   
   
![](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
- 资源充足的情况下，并行度越高，性能提升效果越好。
- SMP并行度支持会话级设置，推荐客户在执行符合要求的查询前，打开SMP，执行结束后，关闭SMP。以免在业务峰值时，对业务造成冲击。
- SMP自适应（query_dop\<=0）依赖资源管理，如果资源管理禁用，那么只会产生1或2并行度的计划。
 
