48.3. PostgreSQL 里的基因查询优化(GEQO

GEQO 模块是试图解决类似漫游推销员问题(TSP)的查询优化问题的。 可能的查询规划被当作整数字串进行编码。每个字串代表查询里面一个关系到下一个关系的 连接的顺序。 例如,下面的查询树

   /\
  /\ 2
 /\ 3
4  1

是用整数字串 '4-1-3-2' 编码的, 这就是说,首先联接关系 '4' 和 '1',然后 '3',然后是 '2', 这里的 1,2,3,4都是 PostgreSQL 优化器里的关系标识(ID)。

GEQO 模块的一部分是采用的 D. Whitley 的 Genitor 算法。

PostgreSQL 里的 GEQO 实现的一些特性是:

GEQO 模块让 PostgreSQL 查询优化器可以通过非穷举搜索有效地支持大的连接查询。

48.3.1. PostgreSQL GEQO 未来的实现任务

我们还需要一些工作来改进基因算法的参数设置。 在文件 backend/optimizer/geqo/geqo_params.c 里的过程 gimme_pool_sizegimme_number_generations, 我们在设置参数时不得不为两个竞争需求做出折衷: