postgresql开启慢查询日志

postgresql开启慢查询日志

>一般的错误跟踪

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

>文件记录设置

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

>跟踪所有SQL语句

log_statement = all  #需设置跟踪所有语句,否则只能跟踪出错信息,设置跟踪的语句类型,有4种类型:none(默认), ddl, mod, all。跟踪所有语句时可设置为 "all"。

>跟踪慢SQL语句

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

>加载配置使配置生效

#在postgres用户命令行下操作
postgres=# select pg_reload_conf()  #配置加载
postgres=# show log_min_duration_statement;
 log_min_duration_statement

配置设置完成可以在log中查看打印参数是否设置成功

>注意点

一、在默认配置条件下,本机访问PostgreSQL

切换到Linux用户postgres,然后执行psql:

$ su - postgres

Last login: Wed Mar 1 13:16:48 CST 2017 on pts/1
-bash-4.2$ psql

psql (9.2.18)
Type "help" for help.

postgres=#

此时就在数据库postgres中了。
log_statement = all 和 log_min_duration_statement = 5000   
#根据需要两者设置其一即可
#如果两个都进行了配置默认所有SQL全部打印,log_min_duration_statement设置失效

参考:
https://www.cnblogs.com/xxfcz/p/6483892.html
https://www.jianshu.com/p/78fe12174d25

select relname as TABLE_NAME, reltuples as rowCounts from pg_class where relkind = 'r' and relnamespace = (select oid from pg_namespace where nspname='public') order by rowCounts desc;  
#统计每张表数据量

针对某个用户或者某数据库进行设置
注意点: 针对某个数据库设置慢SQL
重启PG

postgres=# alter database test set log_min_duration_statement=5000;

用户以及用户权限查询:
https://blog.csdn.net/Yonggie/article/details/80160915

posted @ 2021-11-14 20:56  非学无以致疑  阅读(1919)  评论(0编辑  收藏  举报