【PG執行計劃】Postgresql資料庫執行計劃統計資訊簡述

xysoul_雲龍發表於2019-01-10
--新增analyze實際執行來獲得執行計劃,可不加
explain analyze select * from test_table;
--只看執行路徑,不看cost
explain (costs false) select * from test_table;
--透過實際執行來看代價和緩衝區命中情況
explain (analyze true,buffers true) select * from test_table;
--與執行計劃相關的配置項
enable_seqscan:是否選擇全表掃描
enable_indexscan:是否選擇索引掃描
enable_bitmapscan:是否選擇點陣圖掃描
enable_tidscan:是否tid掃描(類似oracle rowid)
enable_nestloop:多表連線時,是否選擇巢狀迴圈連線
enable_hashjoin:多表連線時,是否選擇hash連線
enable_mergejoin:多表連線時,是否選擇merge連線
enable_hashagg:多表連線時,是否使用hash聚合
enable_sort:是否使用明確的排序。
--cost基準值引數
seq_page_cost:執行計劃中一次順序訪問一個資料塊頁面的開銷,預設1.0
random_page_cost:隨機訪問一個資料塊頁面的開銷,預設4.0
cpu_tuple_cost:執行計劃中,處理一條資料行的開銷,預設0.01
cpu_idex_tuple_cost:處理一條索引行的開銷,預設0.005
cpu_operator_cost:執行一個運算子或函式的開銷,預設0.0025
effective_cache_size:執行計劃中在一次索引掃描中可用的磁碟緩衝區的有效大小。預設128MB
--基因查詢最佳化:是一個使用探索式搜尋來執行查詢規劃的演算法,可以降低負載查詢的規劃時間,它的檢索是隨機的。
geqo:允許和禁止基因查詢最佳化
geqo_threshold:只當涉及的from關係數量至少有這麼多個時,才使用基因查詢最佳化。
geqo_effort:控制geqo裡規劃時間和查詢規劃有效性直接的平衡。預設5,1-10
geqo_pool_size:控制geqo使用池的大小
geqo_generations:控制geqo使用的子代數目,子代意思演算法的迭代次數
geqo_selection_bias:控制geqo使用的選擇性偏好
geqo_seed:控制geqo使用的隨機數產生器的初始值,用以選擇隨機路徑。
--統計資訊收集
--控制是否輸出sql執行過程的統計資訊到日誌
log_statment_stats
log_parser_stats
log_planner_stats
log_executor_stats
--收到收集統計資訊
analyze test01(id2);
analyze test01(id1,id2);
analyze test01;
--設定收集統計資訊行數
set default_statistics_target to 500;
analyze test01;
--or 設定表中每個列的統計target值
alter table test01 alter column id2 set statistics 200;
--指定這個列上有多少唯一值
alter table test01 alter column id2 set (n_distinct=2000);
--子表會繼續使用父表的設計
alter table test01 alter column id2 set (n_distinct_inherited=2000);

【PG執行計劃】Postgresql資料庫執行計劃統計資訊簡述


【PG執行計劃】Postgresql資料庫執行計劃統計資訊簡述


【PG執行計劃】Postgresql資料庫執行計劃統計資訊簡述

【PG執行計劃】Postgresql資料庫執行計劃統計資訊簡述


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29487349/viewspace-2375486/,如需轉載,請註明出處,否則將追究法律責任。

相關文章