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
