更新时间:2026-07-28 GMT+08:00
分享

特性概述

功能定义

全局共享计划缓存(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,可以节省大量内存。

规格约束

  1. 对指定的预编译计划缓存、自动参数化和相同语句计划复用的计划缓存可支持全局共享。
  2. 计划缓存在生成Generic Plan时,才可存入共享。
  3. 对临时表、全局临时表的计划即使生成Generic Plan也不会存入共享。
  4. STREAM计划不支持存入共享。
  5. 客户端支持直连DN时,不支持执行PBE或PREPARE EXECUTE语句。

相关文档