8.3. PostgreSQLの遺伝的問い合わせ最適化(GEQO

GEQOのモジュールは、巡回セールスマン問題(TSP)に似た問い合わせ最適化問題の解決策として意図されています。 可能な問い合わせプランは、整数の文字列としてコード化されます。それぞれの文字列は、問い合わせの1つのリレーションから次へと結合の順番を表します。 たとえば、以下問い合わせツリーは整数文字列「4-1-3-2」によってコード化されています。

   /\
  /\ 2
 /\ 3
4  1

これが意味するのは、まずリレーション「4」と「1」を、次に「3」を、そして「2」を結合するということです。 ここで1、2、3、4はPostgreSQLオプティマイザ内でrelidを表します。

GEQOモジュールの一部はD. WhitleyのGenitorアルゴリズムを適合させたものです。

PostgreSQLにおけるGEQOの実装特有の特徴は下記のとおりです。

GEQOモジュールにより、PostgreSQL問い合わせオプティマイザが、大きな結合問い合わせをしらみつぶし探策以外の方法で実行することが可能になります。

8.3.1. PostgreSQL GEQOの今後の実装作業

遺伝的アルゴリズムのパラメータ設定を改善するためにはまだ課題が残っています。backend/optimizer/geqo/geqo_params.cに、gimme_pool_sizegimme_number_generationsという処理パラメータがあり、次の2つの相反する要求を満たす妥協点を見つけなければいけません。