pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
GEQO模块旨在以类似于旅行商问题(TSP)的方式解决查询优化问题。可能的查询计划被编码为整数串。每个串表示查询中从一个关系到下一个关系的 join 顺序。例如,查询树
/\
/\ 2
/\ 3
4 1
会被编码为整数串 '4-1-3-2',这意味着先连接关系 '4' 和 '1',再连接 '3',最后连接 '2';其中 1、2、3、4 是 Postgres 优化器内部的 relid。
GEQO模块的部分内容改编自 D. Whitley 的 Genitor 算法。
Postgres 中 GEQO 实现的具体特征是:
采用稳态 GA(替换种群中适应度最低的个体,而不是整代替换),能够快速收敛到更优的查询计划。这对于在合理时间内处理查询至关重要;
采用边重组交叉,它特别适合在利用 GA 求解 TSP 时将边损失保持在较低水平;
不使用变异作为遗传操作符,因此无须借助修复机制来生成合法的 TSP 回路。
GEQO模块使Postgres查询优化器能够通过非穷举搜索有效支持大型 join 查询。
为了改进遗传算法的参数设置,仍有一些工作要做。在文件 backend/optimizer/geqo/geqo_params.c 中的例程gimme_pool_size和gimme_number_generations里,我们必须为参数设置找到一种折中,以满足两个相互竞争的需求:
查询计划的最优性
计算时间
GEQ 算法的参考信息。
<bookbiblio><title> The Hitch-Hiker's Guide to Evolutionary Computation </title><authorgroup></authorgroup><publisher><publishername> InterNet resource </publishername></publisher>
摘要
comp.ai.genetic 中的 FAQ 见 Encore。
摘要
文件 planner/Report.ps(在 'postgres-papers' 发行版中)。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。