使用GPORCA时的考虑
确保满足下列条件:
- 表不含有多列分区键。
- 多级分区表示一个统一多级分区表。请见关于统一多级分区表。
在针对只存在于Master的表(例如系统表pg_attribute)运行时,服务器配置参数optimizer_enable_master_only_queries被设置为on。有关该参数的信息,请见Greenplum数据库参考指南。
注意: 启用这一参数会降低短期目录查询的性能。为了避免这一问题,只对会话或者查询设置这一参数。
如果分区表包含超过20,000个分区,考虑重新设计该表的模式。
这些服务器配置参数影响GPORCA查询处理。
- optimizer_cte_inlining_bound控制对公共表表达式(CTE)查询(含有WHERE子句的查询)执行的内联量。
- optimizer_force_multistage_agg强制GPORCA为标量区分限制聚集选择一种3阶段聚集计划。
- optimizer_force_three_stage_scalar_dqa强制GPORCA在生成了带有多阶段聚集的计划时选择它。
- optimizer_nestloop_factor控制查询优化时应用到嵌套循环连接的代价因子。
- optimizer_parallel_union控制对于含有UNION或者UNION ALL子句的查询发生的并行量。当该值为on时,GPORCA可以生成一个查询计划,其中UNION或者UNION ALL操作的子操作在Segment实例上并行执行。
- optimizer_sort_factor控制GPORCA在查询优化时应用于排序操作的代价因子。当出现数据倾斜时可以为查询调整代价因子。
这些服务器配置参数控制信息的显示和记录。
- optimizer_print_optimization_stats控制GPORCA查询优化度量对于查询的记录(默认为off)
GPORCA生成minidump来描述一个给定查询的优化上下文。该文件中的信息不太容易被用于调试或者排错。minidump文件位于Master的数据目录中并且使用下面的命名格式:
Minidump_date_time.mdp
有关minidump文件的信息,请见Greenplum数据库参考指南中的服务器配置参数optimizer_minidump。
上级主题: