考虑到postgres连接时,来一个连一个,走一个断一个,对于资源消耗比较多,安装使用pgbouncer后,pg_stat_acitivity的会话数就比较少了,但是问题是,我在pgbouncer执行的sql语句在pg_stat_activity中没有找到,只有DISCARD ALL这个信息,这个如何修改配置呢?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
当你在使用PgBouncer作为PostgreSQL连接池时,确实可以观察到pg_stat_activity
中显示的会话数减少,因为PgBouncer管理了客户端与实际数据库之间的连接,使得多个客户端可以共享较少的实际数据库连接。关于你提到的在pg_stat_activity
中看不到通过PgBouncer执行的具体SQL语句,这是正常的,因为PgBouncer本身并不直接执行SQL,而是转发客户端的请求到后端的PostgreSQL服务器。
当你看到DISCARD ALL
这样的记录,这通常意味着PgBouncer在客户端断开连接后清理了会话状态,但具体的SQL查询不会直接出现在这里。要查看实际的SQL执行情况,你需要直接查看后端PostgreSQL服务器的pg_stat_activity
。
如果你希望在某种意义上“记录”或“观察”通过PgBouncer转发的所有SQL查询,你可以考虑以下几种方法:
日志记录:在PostgreSQL服务器端配置更详细的日志记录,比如启用log_statement = 'all'
(或ddl
、mod
等根据需要)在postgresql.conf
中,这样所有执行的SQL语句都会被记录到PostgreSQL的日志文件中。
使用审计插件:PostgreSQL支持审计插件,你可以安装并配置如pgaudit
这样的插件来记录SQL活动,这将提供更细粒度的审计信息。
监控工具:利用如pgBadger
分析PostgreSQL日志,或者使用云服务提供的数据库性能监控工具(如果使用的是阿里云RDS PostgreSQL,可以通过其内置的性能监控和日志服务来查看SQL执行情况)。
请注意,直接修改PgBouncer的配置以使其在pg_stat_activity
中显示SQL执行细节是不可能的,因为这不是PgBouncer的功能设计范畴。正确的做法是通过上述建议的方法间接实现你的需求。