特性概述
功能定义
全局共享计划缓存(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可降低会话间重复计划缓存占用的内存,且能使新建会话直接使用缓存计划,降低新建会话上的计划生成开销,从而提升查询效率。
- 每个CN或DN上设置的GUC参数enable_global_plancache值须保持一致,否则会出现异常报错。
用户场景
数据库运行时,若执行计划仅缓存在当前会话中,会浪费大量内存,通过会话间的全局共享计划缓存GPC,可以节省大量内存。