微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Postgresql数据库执行计划统计信息简述

原文链接http://blog.itpub.net/29487349/viewspace-2375486/

转载自:http://blog.itpub.net/29487349/viewspace-2375486/

--添加analyze实际执行来获得执行计划,可不加

explain analyze select from test_table;

--只看执行路径,不看cost

explain (costs falseselect from test_table;

--通过实际执行来看代价和缓冲区命中情况

explain (analyze true,buffers trueselect 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);

 

 

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29487349/viewspace-2375486/,如需转载,请注明出处,否则将追究法律责任。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐