我试图理解SELECT xact_commit FROM pg_stat_database; 根据文档,它是“该数据库中已提交的事务数”。但我打开了记录所有查询 ( log_min_duration = 0) ,似乎除了xact_commit查询之外还有其他东西会影响。例如,连接psql客户端或键入BEGIN; 会将其增加不同的值。我的应用程序中有一个步骤运行单个查询(如日志所确认),但始终将计数器增加 15-20。有谁知道有关 中 的计算内容的更具体信息xact_commit,或者是否有一种方法仅计算实际查询?
pg_stat_database.xact_commit实际上是数据库中的提交次数(请记住,不在事务块中运行的每个语句实际上都在其自己的小事务中运行,因此它将导致提交)。
仍有待解决的谜团是为什么你看到的提交多于语句,这似乎是完全不可能的(例如,BEGIN 启动一个事务,所以根据定义它不能增加xact_commit)。
解决方案可能是异步收集数据库活动统计信息:它们通过 UDP 套接字发送到统计收集器进程,统计收集器最终更新统计信息。
所以我的猜测是,您看到的交易数量增加实际上是来自早期的活动。
尝试保持数据库绝对空闲一段时间,然后重试,然后您应该会看到较慢的增长。
| 归档时间: |
|
| 查看次数: |
6983 次 |
| 最近记录: |