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