-
-
Notifications
You must be signed in to change notification settings - Fork 0
orca guc
Jianghua.yjh edited this page Sep 16, 2025
·
1 revision
SET client_min_messages=log;
SET optimizer_print_memo_after_optimization=on;
SET optimizer_print_optimization_context=on;
SET optimizer_print_optimization_stats=on;
SET optimizer_print_memo_after_exploration=on;
SET optimizer_print_memo_after_implementation=on;
set optimizer_print_query=on;
SET optimizer_trace_fallback=on;
set optimizer_print_plan=on;
set optimizer_print_xform=on; (!!!)
set client_min_messages='log';
set optimizer=on;
set optimizer_enumerate_plans=on;
set optimizer_plan_id=1; (!!!重要)
set client_min_messages='log';
set optimizer_trace_fallback=on;
set optimizer_minidump=always;
set optimizer_enable_constant_expression_evaluation=off;- Query进入DB后,要经过parser转换为AST,然后通过Query2DXL这个模块,将AST描述为DXL可以表述的标准形式(DXL Query)
- Orca接收到query后开始优化,在过程中会获取必要的元信息(如表/列的schema信息,统计信息等),这通过MD Provider实现,并转换为DXL MD传递给Orca,Orca内部是有MD cache的,来避免频繁获取metadata,metadata维护一个version信息,来判断是否过时。
- Orca完成优化流程,确定最优plan后,以DXL Plan的形式,传递给DB端,DB端使用DXL2Plan这个模块转换为内部可识别的physical plan,交由Executor执行。
给定query和代价模型等元信息的前提下,搜索计划空间的所有可能,得到代价最低的执行计划
- gporca_test -d $COORDINATOR_DATA_DIRECTORY/minidumps/Minidump_20220508_135045_1613_28.mdp -T 103026
- cd build.debug && ctest
https://www.slideshare.net/XinShinZhang/the-internals-of-gporca-optimizer
https://github.com/greenplum-db/gpdb/wiki/ORCA-Training-Boot-Camp


