GPORCA 概述
GPORCA 是在 Postgres 查询优化器基础上构建的增强版优化器,增强了查询规划和优化能力。它具有良好的扩展性,特别是在多核架构下能实现更高效的优化效果。Apache Cloudberry 默认在支持的场景下使用 GPORCA 生成查询执行计划。
GPORCA 在以下方面显著增强了 Apache Cloudberry 的查询性能:
- 分区表查询
- 含公用表表达式(CTE)的查询
- 含子查询的查询
在 Apache Cloudberry 中,GPORCA 与基于 Postgres 的优化器同时存在。默认情况下,系统优先尝试使用 GPORCA。当 GPORCA 不支持某些查询时,系统会自动回退使用 Postgres 优化器。
下图展示了 GPORCA 在整体查询规划架构中的位置:
需要注意的是,所有用于配置 Postgres 优化器行为的服务器参数在 GPORCA 模式下均被忽略。仅当系统回退使用 Postgres 优化器时,这些参数才会影响查询计划的生成。
启用或禁用 GPORCA
可以通过服务器配置参数 optimizer
启用或禁用 GPORCA。
虽然系统默认启用 GPORCA,但你也可以在系统、数据库、会话或查询级别灵活配置 optimizer
参数,控制是否使用 GPORCA。
提示
optimizer
参数用于启用或禁用 GPORCA。optimizer_control
参数用于控制是否允许修改optimizer
的值。当optimizer_control
为off
时,尝试更改optimizer
参数会报错。只有将其设置为on
,才允许修改optimizer
参数。
为系统启用 GPORCA
通过设置服务器参数 optimizer
,可以在整个系统范围内启用 GPORCA。
-
使用 Apache Cloudberry 管理员用户
gpadmin
登录到主节点。 -
通过以下
gpconfig
命令设置参数值为on
:gpconfig -c optimizer -v on --coordinatoronly