我正试图了解SELECT xact_commit FROM pg_stat_database;
,根据文档,它是“此数据库中已提交的事务数”。但是我打开了记录所有查询(log_min_duration = 0
)的记录,看来除了影响查询之外,还有其他一些因素可能影响xact_commit
。例如,连接psql
客户端或键入BEGIN;
会将其增加各种值。我的应用程序中有一个步骤可以运行单个查询(已通过日志确认),但是始终将计数器增加15-20。有人知道xact_commit
中计数的内容是否更具体吗?或者是否有一种方法可以只统计实际查询?
答案 0 :(得分:1)
pg_stat_database.xact_commit
确实是数据库中的提交数(请记住,未在事务块中运行的每个语句实际上都在其自己的小事务中运行,因此会引起提交)。
还有一个待解决的谜团,就是为什么您看到的提交多于语句,这似乎是不可能的(例如,BEGIN
开始,因此根据定义,它不能增加{ {1}}。
解决方案可能是数据库活动统计信息是异步收集的:它们通过UDP套接字发送到统计信息收集器进程,并且统计信息收集器最终会更新统计信息。
所以我的猜测是,您看到的增加的交易计数实际上来自早期的活动。
尝试让数据库绝对闲置一段时间,然后重试,然后您会发现增长缓慢。