auto_explain模块

开启方式

1、通过配置文件postgresql.conf

shared_preload_libraries = 'auto_explain'

auto_explain.log_min_duration = 0 # 为了方便查看,这里把时间设置为0,所有SQL都会被auto_explain捕获输出.实际使用的时候适当调大。如 100ms auto_explain.log_analyze = true # 以下可选 auto_explain.log_verbose = true auto_explain.log_buffers = true auto_explain.log_nested_statements = true

 

需要重启数据库,重启时会输出一个LOG

postgres@db5-> LOG: loaded library "$libdir/auto_explain.so"

 

2、通过LOAD 'auto_explain';

只在当前session生效,不需要重启数据库,需要超级用户权限

普通用户不允许加载auto_explain模块(普通用户只允许加载$libdir/plugins目录下的模块,但是auto_explain即使拷贝到这个目录也不行)

也可以设置local_preload_libraries,session_preload_libraries参数来启用

 

配置参数介绍及示例

配置参数控制着auto_explain的行为。需要注意的是,默认情况下的行为是什么也不做,所以如果想要得到相关结果,必须至少要设置auto_explain.log_min_duration这个参数。注意,只有数据库超级用户才能设置以下参数。

 

1)auto_explain.log_min_duration(integer)

这个参数指的是最小语句执行时间,单位是毫秒,设置之后语句计划就会被记录。例如,设置此参数的值为250毫秒,那么运行时间在250毫秒及以上的语句会被记录下来。默认值为-1,表示不记录任何计划。

如果将此参数设置为0,表示记录所有的计划。

 

2)auto_explain.log_analyze(boolean)

设置这个参数使得当一个执行计划被记录时,会让EXPLAIN ANALYZE的结果,而不仅仅是EXPLAIN 的结果被打印出来。默认值为off。

将此参数设置为on之后,就能获得EXPLAIN ANALYZE的结果。

注意,将这个参数设置为on可能会对性能造成极大的不良影响,所以为了优化性能成本可以将它设置为off,代价是获得的信息会少一些。

 

3)auto_explain.log_buffers(boolean)

此参数控制着当一个执行计划被记录时,缓冲区用量统计信息是否被打印出来。这个参数只有当开启auto_explain.log_analyze后才有作用,默认为off。

 

4)auto_explain.log_timing(boolean)

此参数控制着当一个执行计划被记录时,是否每个节点的时间信息都被打印出来。这个参数只有当开启auto_explain.log_analyze后才有作用,默认值为on。

需要注意的是,在有些系统中重复读取系统时钟的开销会显著地降低查询速率。所以如果我们只想得到实际的行数信息,而不是精确的时间信息的话,建议将此参数设置为off

 

5)auto_explain.log_triggers(boolean)

此参数使得当一个执行计划被记录时,触发器的执行统计信息也会被包含进去。这个参数只有当开启auto_explain.log_analyze后才有作用,默认值为off。

 

6)auto_explain.log_verbose(boolean)

此参数控制着当执行计划被记录时,是否打印细节信息。默认值为off。

 

7)auto_explain.log_format(enum)

设置这个参数可以选择要使用的EXPLAIN输出格式。默认为text格式,可选的格式有:text,xml,json 和yaml格式。

 

 

8)auto_explain.log_nested_statements

设置此参数可以让嵌套语句被记录下来。默认值为off,表示只有顶层查询会被记录。

 

9)auto_explain.sample_rate使auto_explain

设置此参数可以使auto_explain只解释每个会话中的一部分语句。默认值为1,表示解释所有的查询。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值