auto_explain可以定义sql执行的时间以记录在postgres中日志中,包含sql的直接计划,在线上优化时可以说是一个非常好用的工具,
另外结合pg_stat_statements、log_min_duration_statement和log_statement = all 可以说是分析线上慢sql的利器,auto_explain包含在安装软件中,可以直接安装使用:
[root@my1 ~]# cd postgresql-10.0/contrib/auto_explain
[root@my1 auto_explain]# make &&  make install

配置postgresql.conf文件:
shared_preload_libraries = 'auto_explain'
# auto_explain
#auto_explain.log_min_duration = '1s'  #记录执行超过1s的sql
auto_explain.log_min_duration = 100   #记录执行超过100ms的sql
#auto_explain.log_min_duration = 0      #记录全部执行的sql
auto_explain.log_timing = on
auto_explain.log_verbose = on

重启数据库:
pg_ctl restart -m fast
备注:
auto_explain.log_min_duration 可以随时修改,修改后reload即可,线上可以根据需要进行在线调整
修改需要重启数据库shared_preload_libraries = 'auto_explain' ;