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, 我們在設置參數時不得不為兩個競爭需求做出折衷: