闲置在事务中:如何获取查询

时间:2015-09-13 05:46:03

标签: database postgresql

我的应用程序执行许多查询,并确保所有连接都已关闭。 PgAdmin显示许多查询已经消失了#34;闲置交易"最后DB变得反应迟钝。有没有办法让查询在交易中空闲' ?还是可以跟踪它的任何其他工具?使用Postgres 8.1 修改:使用连接池。此外,国家'在交易中#39;几分钟后就被清除了。然后,如果打开任何连接,该如何清除?

2 个答案:

答案 0 :(得分:2)

这是一个干净的信号,因此有些关于关闭交易和结账会话的信息在您的申请中是错误的。查询效果很好。检查您的应用程序 - 意外的异常,失败,......某些应用程序非常错误 - 通常是非常严重问题。孤立事务会阻止VACUUM并阻止重用连接。

答案 1 :(得分:1)

如果您在Postgres documentation中查看有关此内容的信息:

  

在事务中空闲(等待BEGIN块内的客户端),或者a   命令类型名称,如SELECT。此外,等待附加   服务器进程正在等待另一台服务器持有的锁   过程

我建议遵循以下事项:

  • 使用class UrlMappings { static mappings = { "/$controller/$action?/$id?(.$format)?"{ constraints { // apply constraints here } } "/"(view:"/index") "500"(view:'/error') "404"(view:'/notFound') } } 启用“长查询”记录 Error Reporting and Logging部分 postgresql.conf 中的log_min_duration_statement选项

  • 检查 postgresql.conf 配置文件的Lock Management参数,特别是log_lock_waits选项

  • 查看关于Postgres Wiki的Lock Monitoring文章和Postgres中的pg_locks视图