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