PostgreSQL 慢查询SQL跟踪
2024-09-03 00:18:03
PostgreSQL 开启慢SQL捕获在排查问题时是个很有效的手段。根据慢SQL让我在工作中真正解决了实际问题,很有帮助。
PostgreSQL 日志支持的输出格式有 stderr(默认)、csvlog 、syslog
一般的错误跟踪,只需在配置文件 【postgresql.conf】简单设置几个参数,当然还有错误级别等要设置。
logging_collector = on
log_destination = 'stderr'
log_directory = 'log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' SELECT
name,
setting,
vartype,
boot_val,
reset_val
FROM pg_settings
where name in('logging_collector','log_destination','log_directory','log_filename');
默认的跟踪日志记录在 pgdate/log 中,如 /usr/local/pgsql/data/log 。
其他几个重要参数说明:
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:
设置跟踪的语句类型,有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;
针对某个用户或者某数据库进行设置
alter database test set log_min_duration_statement=5000;
捕获正在查询的慢SQL
select * from pg_stat_activity where state<>'idle' and now()-query_start > interval '5 s' order by query_start ;
最新文章
- Jquery遍历选中的input标签
- MSSQL Server数据库的四种连接方法和sql连接字符串
- FZU 2191 完美的数字
- Linux(Red Hat)-中安装Vmware Tools
- NET中的规范标准注释(二) -- 创建帮助文档入门篇
- LeetCode340 Longest Substring with At Most K Distinct Characters
- MVC模式(Model View Controller)下实现数据库的连接,对数据的删,查操作
- Jquery Slick幻灯片插件
- gcc编译器与基本类型3
- bzoj 2281 [Sdoi2011]黑白棋(博弈+组合计数)
- 制作 OpenStack Linux 镜像 - 每天5分钟玩转 OpenStack(151)
- batch gradient descent(批量梯度下降) 和 stochastic gradient descent(随机梯度下降)
- php 常用的自定义函数
- 高度自适应的div
- inline-block,一个奇怪的问题:中间div掉下来
- ReactNative学习笔记(七)Navigator的使用
- C# 如何提取字符串中的数字
- Diagnosing out of memory errors and memory leaks 内存泄露实例 C Java JavaScript 内存泄露
- Maven项目的拆分与聚合
- Shell记录-Shell脚本基础(五)