当前位置: 首页 > news >正文

PostgreSQL打印实时查询语句(监控PostgreSQL监控)(未成功)

最后通过后端flask sqlalchemy开启SQLALCHEMY_ECHO每次数据库访问打印实现了:

在这里插入图片描述

文章目录

  • **方法 1:通过 PostgreSQL 日志实时查看**
    • **1. 修改 PostgreSQL 配置文件**
    • **2. 重启 PostgreSQL 容器**
    • **3. 实时查看日志**
    • **日志示例**
  • **方法 2:通过 `pg_stat_activity` 实时监控**
    • **1. 查询实时执行的 SQL**
    • **2. 使用 `watch` 实时刷新**
  • **方法 3:使用 `pg_stat_statements` 扩展**
    • **1. 启用 `pg_stat_statements`**
    • **2. 查询实时 SQL 统计**
  • **注意事项**
  • **总结**

可以实现实时打印每条查询的 SQL 语句,方法如下:


方法 1:通过 PostgreSQL 日志实时查看

1. 修改 PostgreSQL 配置文件

docker-compose.yml 中挂载的 postgresql.conf 文件中,添加以下日志配置:

# 开启日志记录所有 SQL 语句
log_statement = 'all'# 设置日志输出格式(推荐包含时间、进程 ID 等)
log_line_prefix = '%t [%p]: [user=%u,db=%d] '# 开启日志收集器
logging_collector = on
log_directory = '/var/log/postgresql'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'

2. 重启 PostgreSQL 容器

docker compose down
docker compose up -d

3. 实时查看日志

通过 docker logs 或直接访问挂载的日志目录实时查看:

# 方法 1:通过 docker logs 实时查看
docker compose logs -f postgres# 方法 2:直接访问宿主机日志目录(假设日志挂载到 ./logs)
tail -f ./logs/postgresql-*.log

日志示例

2025-09-07 16:24:38.123 UTC [1234]: [user=postgres,db=postgres] LOG:  statement: SELECT * FROM my_table;

方法 2:通过 pg_stat_activity 实时监控

1. 查询实时执行的 SQL

定期执行以下 SQL 语句(可通过脚本或 watch 命令):

SELECT pid, usename, query, query_start, now() - query_start AS duration
FROM pg_stat_activity
WHERE state = 'active' AND query != '<IDLE>'
ORDER BY query_start DESC;

2. 使用 watch 实时刷新

watch -n 1 "psql -U postgres -d postgres -c 'SELECT * FROM pg_stat_activity;'"

方法 3:使用 pg_stat_statements 扩展

1. 启用 pg_stat_statements

postgresql.conf 中添加:

shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.track = all

重启容器后执行:

CREATE EXTENSION pg_stat_statements;

2. 查询实时 SQL 统计

SELECT query, calls, total_exec_time, mean_exec_time
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;

注意事项

  1. 日志性能开销log_statement = 'all' 会记录所有 SQL,可能影响性能,建议仅用于调试。
  2. 日志轮转:通过 log_rotation_agelog_rotation_size 控制日志文件大小。
  3. 权限问题:确保挂载的日志目录(如 ./logs)有写入权限。
  4. 生产环境:建议仅记录慢查询(log_min_duration_statement)而非所有语句。

总结

  • 实时打印每条查询:使用 方法 1(日志记录)
  • 实时监控活跃查询:使用 方法 2(pg_stat_activity
  • 分析历史查询性能:使用 方法 3(pg_stat_statements

文章转载自:

http://FsZP7jIL.Lgmgn.cn
http://1zMrlYMj.Lgmgn.cn
http://NPL5na7P.Lgmgn.cn
http://yqNIKMbr.Lgmgn.cn
http://0PBZW1Ob.Lgmgn.cn
http://OTJpXVWB.Lgmgn.cn
http://3kfdyXq6.Lgmgn.cn
http://98t3CLgf.Lgmgn.cn
http://3N8TWWY0.Lgmgn.cn
http://qvxPRJHs.Lgmgn.cn
http://jZUmleSm.Lgmgn.cn
http://zVLqn7jt.Lgmgn.cn
http://sMBoxjnM.Lgmgn.cn
http://j08bmxXl.Lgmgn.cn
http://xbGv3v7P.Lgmgn.cn
http://fHw5lmM5.Lgmgn.cn
http://UplbL9Ox.Lgmgn.cn
http://vr0HJ5YK.Lgmgn.cn
http://AqInjYng.Lgmgn.cn
http://GJZWb0XY.Lgmgn.cn
http://gUl2xqGX.Lgmgn.cn
http://yEXwV07K.Lgmgn.cn
http://I5Vi7dEa.Lgmgn.cn
http://JhL7WEvp.Lgmgn.cn
http://zFC6KtrV.Lgmgn.cn
http://Mn9oagvD.Lgmgn.cn
http://zzRgKkiZ.Lgmgn.cn
http://3c2p8iBT.Lgmgn.cn
http://zndthB5m.Lgmgn.cn
http://inmbHbHR.Lgmgn.cn
http://www.dtcms.com/a/373065.html

相关文章:

  • “代练护航”小程序API源码搭建:高并发接单系统的技术突破与实战,多端适配与跨平台开发 如何覆盖微信、H5、APP全场景?
  • 从航空FACE的一个落地方案漫谈汽车HPC软件架构的思维转变(1/3)FACE基础概念与落地案例
  • Docker多共享网络配置策略(Docker多网络、Docker networks、Docker Compose网络、Docker网络、Docker共享网络)
  • Terraform 从入门到实战:历史、原理、功能与阿里云/Azure 上手指南
  • 阿里云国际代理:稳定、高效、便捷的数据库服务-云数据库RDS
  • Django中的软删除
  • PyCharm旧版本下载地址
  • 华为USG6000v2 NAT模式下IPSEC IKE V1 实验
  • 深入实践G1垃圾收集器调优:Java应用性能优化实战指南
  • sqlite3的使用
  • LeetCode Hot 100 Python (81~90)
  • LeetCode 面试经典 150 题:删除有序数组中的重复项(双指针思想解法详解)
  • apifox的post的表单提交的gbk的解决方案
  • leetcode算法刷题的第二十九天
  • 绿联科技全球化突围:业财一体化如何打通全球电商全链路数字化
  • golang-gin包
  • SpringAI调用MCP服务的实现思路
  • react16到react19更新及底层实现是什么以及区别
  • K-meas 聚类、KNN算法、决策树、随机森林
  • Day 17: 3D点云深度学习专项 - 理论深度与面试精通之路
  • React中的合成事件
  • 不连续页分配器补充
  • Hadoop NameNode内存泄漏与GC停顿问题排查与解决方案
  • 防火墙配置
  • Hydra-SSH 破解安全防范
  • Hadoop(十)
  • C++三种对象实例化在栈或堆的区别
  • 碰一碰系统源码于小程序打通技术开发整合方案,驱动AI技术开发源代码
  • 深入解析TCP核心机制:连接管理、流量与拥塞控制
  • 【混合开发】vue+Android、iPhone、鸿蒙、win、macOS、Linux之dist打包发布在Android工程asserts里