↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.5 / 6.4 / 6.3
历史版本PostgreSQL 6.3 已于 2003 年 3 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

50.3. Postgres 中的遗传查询优化(GEQO) #

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 回路。

与 Postgres 查询优化器实现相比,GEQO 模块为 Postgres DBMS 带来以下益处:

  • 通过非穷举搜索处理大型 join 查询;

  • 改进了查询计划的代价大小估算,因为不再需要计划合并 (GEQO 模块把一个查询计划的代价作为一个个体来评估)。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。