Skip to content

1.完整配置

#################slow_log#####################
logging_collector = on
log_destination = 'stderr'
log_directory = 'log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'

log_rotation_age = 1d
log_rotation_size = 10240
log_min_duration_statement = 3000
log_statement = DDL
log_truncate_on_rotation = on
#################slow_log#####################
logging_collector = on
log_destination = 'stderr'
log_directory = 'log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'

log_rotation_age = 1d
log_rotation_size = 10240
log_min_duration_statement = 3000
log_statement = DDL
log_truncate_on_rotation = on

2.捕获正在查询的慢SQL

select * from pg_stat_activity where state<>'idle' and now()-query_start > interval '5 s' order by query_start ;
select * from pg_stat_activity where state<>'idle' and now()-query_start > interval '5 s' order by query_start ;

3.查看配置

SELECT 
      name,
      setting,
      vartype,
      boot_val,
      reset_val 
FROM pg_settings 
where name in('logging_collector','log_destination','log_directory','log_filename');
SELECT 
      name,
      setting,
      vartype,
      boot_val,
      reset_val 
FROM pg_settings 
where name in('logging_collector','log_destination','log_directory','log_filename');

其他几个重要参数说明:

log_rotation_age = 1440    #minute,多长时间创建新的文件记录日志。0 表示禁扩展。
log_rotation_size = 10240    #kb,文件多大后创建新的文件记录日志。0 表示禁扩展。
log_truncate_on_rotation = on #可重用同名日志文件
log_rotation_age = 1440    #minute,多长时间创建新的文件记录日志。0 表示禁扩展。
log_rotation_size = 10240    #kb,文件多大后创建新的文件记录日志。0 表示禁扩展。
log_truncate_on_rotation = on #可重用同名日志文件

当需要跟踪SQL语句或者慢语句,得需要设置以下参数:

log_statement = all    #需设置跟踪所有语句,否则只能跟踪出错信息
log_min_duration_statement = 5000    #milliseconds,记录执行5秒及以上的语句
log_statement = all    #需设置跟踪所有语句,否则只能跟踪出错信息
log_min_duration_statement = 5000    #milliseconds,记录执行5秒及以上的语句

log_statement: 设置跟踪的语句类型,有4种类型:none(默认), ddl, mod, all。跟踪所有语句时可设置为 "all"。

log_min_duration_statement: 跟踪慢查询语句,单位为毫秒。如设置 5000,表示日志将记录执行5秒以上的SQL语句。

当 log_statement=all 和 log_min_duration_statement 同时设置时,将跟踪所有语句,忽略log_min_duration_statement 设置。所以需按情况设置其中一个或两个值。

加载配置

select pg_reload_conf();

show log_min_duration_statement;
select pg_reload_conf();

show log_min_duration_statement;

针对某个用户或者某数据库进行设置

 alter database test set log_min_duration_statement=5000;
 alter database test set log_min_duration_statement=5000;