Using EDB Query Advisor

EDB Query Advisorは、関数とビューを定義します。

機能

query_advisor_index_recommendations(min_filter、min_selectivity)

この関数は、グローバルインデックスの提案を実行します。

デフォルトでは、少なくとも1000行、平均して30%の行をフィルタリングする述語のみが考慮されます。 min_filter およびmin_selectivity パラメーターを使用して、デフォルトをオーバーライドできます。

この関数は、収集する述語に基づいて、1列および2列のインデックス候補を生成します。各候補に関して仮想インデックスが存在する場合、関連するすべてのワークロードクエリを再計画します。ワークロードに最大の価値をもたらすインデックスのリストを推奨します。また、ワークロードクエリの推定インデックスサイズとコスト削減の割合も示しています。サイズと利益率に基づいて、どのインデックスが最も役立つかを判断できます。

例:

postgresユーザで実行

select * from query_advisor_index_recommendations(0,0);
__OUTPUT__
|                             index                             | estimated_size_in_bytes | estimated_pct_cost_reduction |
+---------------------------------------------------------------+-------------------------+------------------------------+
| CREATE INDEX ON nation USING btree (n_name);                  | 8192                    | 14.619857                    |
| CREATE INDEX ON supplier USING btree (s_suppkey,s_nationkey); | 933888                  | 0.63003576                   |
| CREATE INDEX ON partsupp USING btree (ps_suppkey);            | 50159616                | 13.254544                    |
(3 rows)

この関数は、式ハッシュで識別されるすべての修飾子のカウントを返します。このハッシュは、各式を識別します。

Qualifier

Description

userid

クエリを実行したユーザーのID。

dbid

クエリが実行されたデータベースのID。

lrelid, lattnum

リレーションのIDと左側のVARの属性番号(ある場合)。

opno

式で使用される演算子のID

rrelid, rattnum

リレーションのIDと右側のVARの属性番号(ある場合)。

qualid

親AND式がある場合、その正規化された識別子。この識別子は、定数を除外して計算されます。この修飾子は、一緒に使用される述語を識別するのに役立ちます。

uniquequalid

親AND式がある場合、それを表す一意識別子。この識別子は、定数を含めて計算されます。

qualnodeid

この単純な述語の正規化された識別子。この識別子は、定数を除外して計算されます。

uniquequalnodeid

この単純述語を表す一意識別子。この識別子は、定数を含めて計算されます。

occurrences

この述語が呼び出された回数、つまり、関連するクエリ実行の数。

execution_count

この述語が実行された回数、つまり処理された行数。

nbfiltered

この述語が破棄されたタプルの数。

queryid

クエリ識別子。

eval_typ

評価タイプ: スキャン後に評価される述語の場合は f、インデックス述語の場合は i。

例:

postgresユーザで実行

select * from query_advisor_qualstats();
__OUTPUT__
| userid | dbid | lrelid | lattnum | opno | rrelid | rattnum | qualid | uniquequalid | qualnodeid | uniquequalnodeid | occurrence | execution_count | nbfiltered | min_err_estimate_ratio | max_err_estimate_ratio | mean_err_estimate_ratio | stddev_err_estimate_ratio | min_err_estimate_num | max_err_estimate_num | mean_err_estimate_num | stddev_err_estimate_num |       queryid        | eval_type |
+--------+------+--------+---------+------+--------+---------+--------+--------------+------------+------------------+------------+-----------------+------------+------------------------+------------------------+-------------------------+---------------------------+----------------------+----------------------+-----------------------+-------------------------+----------------------+-----------+
| 10     | 5    | 16501  | 1       | 96   |        |         |        |              | 262905824  | 262905824        | 1          | 3000000         | 2999997    | 3                      | 3                      | 3                       | 0                         | 2                    | 2                    | 2                     | 0                       | -3469822585968758916 | f         |

格納されているすべてのクエリテキストを返します。

ワークロードと修飾子ハッシュテーブルの使用率を返します。

内部カウンターをリセットし、遭遇したすべての修飾子とワークロードエントリーについて忘れます。

ビュー

この拡張機能は、 pg_qualstats 関数の上に次のビューを定義します。

query_advisor_qualstat

現在のデータベースでquery_advisor_qualstats() への呼び出しをフィルタリングします。

query_advisor_qualstats_pretty

適切な結合を実行して、query_advisor_qualstatsビューのすべての属性の読み取り可能な集計フォームを表示します。

例:

roユーザで実行

select * from query_advisor_qualstats_pretty;
__OUTPUT__
 left_schema |    left_table    | left_column |   operator   | right_schema | right_table | right_column | occurrences | execution_count | nbfiltered
- -----------+------------------+-------------+--------------+--------------+-------------+--------------+------------+-----------------+------------
 public     | pgbench_accounts | aid         | pg_catalog.= |              |             |              |          5 |         5000000 |    4999995
 public     | pgbench_tellers  | tid         | pg_catalog.= |              |             |              |         10 |        10000000 |    9999990
 public     | pgbench_branches | bid         | pg_catalog.= |              |             |              |         10 |         2000000 |    1999990
 public     | t1               | id          | pg_catalog.= | public       | t2          | id_t1        |          1 |           10000 |       9999