11. クエリプロファイルの生成
– クエリの前に PROFILE をつけることにより、クエリパフォーマンス分析のために使える情報が得られる
11
PROFILE SELECT order_number,date_ordered
FROM store.store_orders_fact orders
WHERE orders.store_key IN (
SELECT store_key
FROM store.store_dimension
WHERE store_state = 'MA')
AND orders.vendor_key NOT IN (
SELECT vendor_key
FROM public.vendor_dimension
WHERE vendor_state = 'MA')
AND date_ordered < '2012-03-01';
12. プロファイルの結果
12
NOTICE 4788: Statement is being profiled.
HINT: SELECT *
FROM v_monitor.execution_engine_profiles
WHERE transaction_id = 45035996273738674 AND statement_id = 15;
NOTICE 3557: Initiator memory for query: [on pool general: 732615 KB, minimum: 147104
KB]
NOTICE 5077: Total memory required by query: [732615 KB]
order_number | date_ordered
--------------+--------------
292437 | 2012-01-01
240145 | 2012-01-01
234175 | 2012-01-02
27987 | 2012-01-02
47916 | 2012-01-02
8588 | 2012-01-01
252130 | 2012-01-02
213721 | 2012-01-02
265128 | 2012-01-02
13. クエリの出力をリダイレクト
13
=> o /dev/null
=> PROFILE SELECT order_number,date_ordered
FROM store.store_orders_fact;
NOTICE 4788: Statement is being profiled
HINT: Select * from v_monitor.execution_engine_profiles where
transaction_id=45035996273710140 and statement_id=28;
NOTICE 3557: Initiator memory for query: [on pool general: 6816 KB, minimum:
6816 KB]
NOTICE 5077: Total memory required by query: [6816 KB]
=> o
20. 実行計画の生成
– クエリの前に EXPLAIN をつけることにより、オプティマイザのクエリプランの実行ストラテジーが得られる
– オプティマイザが実行可能なプランを評価し、コストに基づいて最良な選択肢を返す
20
EXPLAIN SELECT order_number,date_ordered
FROM store.store_orders_fact orders
WHERE orders.store_key IN (
SELECT store_key
FROM store.store_dimension
WHERE store_state = 'MA')
AND orders.vendor_key NOT IN (
SELECT vendor_key
FROM public.vendor_dimension
WHERE vendor_state = 'MA')
AND date_ordered < '2012-03-01';
54. オプティマイザの詳細情報
54
SELECT * FROM query_events
WHERE transaction_id = 45035996273705062 AND statement_id = 2
and event_category = 'optimization';
-[ RECORD 1 ]------------+----------------------------------------------
event_timestamp | 2012-01-25 12:33:04.352453-05
node_name | v_vmart_schema_node0001
user_id | 45035996273704962
user_name | dbadmin
session_id | verticaTraining64bi-7886:0x22
request_id | 30
transaction_id | 45035996273705062
statement_id | 2
event_category | OPTIMIZATION
event_type | NO HISTOGRAM
event_description | The optimizer encountered a predicate on a column
for which it does not have a histogram
object_id | 45035996273719954
event_details | No histogram for
store.store_dimension.store_state
suggested_action |
analyze_statistics('store.store_dimension.store_state');
56. イベントの詳細情報
56
SELECT * FROM query_events
WHERE transaction_id = 45035996273705062 AND statement_id = 2
and event_category = 'execution';
-[ RECORD 1 ]------------+----------------------------------------------
event_timestamp | 2012-01-25 12:33:04.352453-05
node_name | v_vmart_schema_node0001
user_id | 45035996273704962
user_name | dbadmin
session_id | verticaTraining64bi-7886:0x22
request_id | 30
transaction_id | 45035996273705062
statement_id | 2
event_category | EXECUTION
event_type | GROUP_BY_SPILLED
event_description | GROUP BY key set did not fit in memory, using
external sort grouping.
object_id |
event_details |
suggested_action | Consider a sorted projection. Increase memory
available to the plan