46.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 查詢優化器可以透過非窮舉搜索有效地支援大的連接查詢。

46.3.1. PostgreSQL GEQO 未來的實現任務

我們還需要一些工作來改進基因算法的參數設置。 在文件 backend/optimizer/geqo/geqo_params.c 裡的過程 gimme_pool_sizegimme_number_generations, 我們在設置參數時不得不為兩個競爭需求做出折衷:

在最基本的層面上,我們並不清楚用給 TSP 涉及的 GA 算法解決查詢優化的問題是否合適。 在 TSP 的情況下,與任何子字串(部分旅遊)相關的開銷都是獨立於旅遊的其他部分的, 但是目前,這一點對於查詢優化是不同的。因此,我們可以懷疑邊緣重組交叉是否最有效的突變過程。