我遇到了一个问题,即我有两个从用户到我的 PostgreSQL 服务器的连接,这些连接已经运行了大约 4 个小时并且已经处于提交状态相当长一段时间(我一直在观看它至少 1 小时) . 这些连接会阻止其他查询运行,但它们本身并未被阻止。
这是有问题的两个连接。
postgres=# select * from pg_stat_activity where usename = 'xxxxx';
datid | datname | procpid | usesysid | usename | current_query | waiting | xact_start | query_start | backend_start | client_addr | client_port
-------+---------+---------+----------+---------+---------------+---------+-------------------------------+-------------------------------+-------------------------------+---------------+-------------
20394 | xxxxxx | 17509 | 94858 | xxxxx | COMMIT | f | 2014-01-30 05:51:11.311363-05 | 2014-01-30 05:51:12.042515-05 | 2014-01-30 05:51:11.294444-05 | xx.xx.xxx.xxx | 63531
20394 | xxxxxx | 9593 | 94858 | xxxxx | COMMIT …
Run Code Online (Sandbox Code Playgroud) 作为一名 DBA,我会定期观察我的数据库,调整一些查询(让程序员重新编写它,或者添加索引或更新统计信息,如果需要的话,等等)。我还调整了服务器选项等。
但我不满意的是我没有好的指标来说明我的工作是否值得。
在一次性查询优化中,我可以判断我是否让查询运行得更快。我可以使用日志和 pgfouine 来检测慢查询。
但是是否有整体方法来量化数据库的运行情况,跟踪的指标会告诉我我是在总体上改进还是没有真正产生影响,等等?
我正在寻找在数据库级别捕获的指标,而不是在应用程序级别。