
# 特性概述
#### 功能定义
全局共享计划缓存（Global Plan Cache, GPC）功能可共享不同会话间的执行计划。GPC在预编译计划缓存、自动参数化和相同语句计划复用的基础上生效，将缓存在会话内的计划存入GPC，使其在全局可见，其他会话可根据实际的SQL语句在全局计划缓存中获取所需的计划，并复用共享计划缓存进行执行操作。
GPC可通过GUC参数enable_global_plancache进行控制。不开启GPC（即GUC参数enable_global_plancache设置为off）时，每个会话仅对自己执行过的计划进行缓存，即存在相同的业务会话且均执行相同的查询，每个会话上都需要单独生成一次私有的计划。开启GPC（即GUC参数enable_global_plancache设置为on）后，由于计划在全局范围可获取，新建的连接可以直接在共享计划缓存中获取计划（并非单独生成计划）。因此GPC可降低会话间重复计划缓存占用的内存，且能使新建会话直接使用缓存计划，降低新建会话上的计划生成开销，从而提升查询效率。
![](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
- 每个CN或DN上设置的GUC参数enable_global_plancache值须保持一致，否则会出现异常报错。
 
#### 用户场景
数据库运行时，若执行计划仅缓存在当前会话中，会浪费大量内存，通过会话间的全局共享计划缓存GPC，可以节省大量内存。
 #### 规格约束
1. 对指定的预编译计划缓存、自动参数化和相同语句计划复用的计划缓存可支持全局共享。
2. 计划缓存在生成Generic Plan时，才可存入共享。
3. 对临时表、全局临时表的计划即使生成Generic Plan也不会存入共享。
4. STREAM计划不支持存入共享。
5. 客户端支持直连DN时，不支持执行PBE或PREPARE EXECUTE语句。
 
