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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM