PostgreSQL 14: pg_stat_database 新增会话和会话时间计数器

John Doe 七月 21, 2025

你想要查看数据库中所有会话连接的历史统计信息吗?

草原上的一头大象

特性提交日志

为 pg_stat_database 新增会话和会话时间计数器。

这为 pg_stat_database 增加了会话数量、不同类型的会话终止类型的计数器,以及数据库中活跃时间与空闲时间的计时器。

在内部,还将参数 “force” 重命名为 “disconnect”。这是该参数之前唯一的使用场景,因此将其重新用于这个更具体的场景,比新增一个参数更简洁。

讨论:https://postgr.es/m/b07e1f9953701b90c66ed368656f2aef40cac4fb.camel@cybertec.at

示例

在本次提交的特性中,pg_stat_database 系统视图新增了以下列:

  • session_time(会话时间)
  • active_time(活跃时间)
  • idle_in_transaction_time(事务中空闲时间)
  • sessions(会话数)
  • sessions_abandoned(废弃的会话数)
  • sessions_fatal(因致命错误终止的会话数)
  • sessions_killed(被杀死的会话数)

时间列的值以毫秒为单位,分别表示连接到特定数据库的所有会话的总持续时间、运行查询所花费的时间(与空闲时间相对),以及在事务中处于空闲状态所花费的时间。

此外,还有 4 个计数器用于统计会话数量,第一个是总会话数,另外三个是非正常退出的会话数:

  • sessions_abandoned:通常是网络连接问题或客户端应用程序崩溃导致的会话退出
  • sessions_fatal:因致命(FATAL)级别错误而终止的会话数
  • sessions_killed:被用户杀死的会话数。例如,通过调用pg_terminate_backend()

所有这些统计信息都可以实时查看:

$ select * from pg_stat_database where datname = 'redrock' \gx
-[ RECORD 1 ]-------------------------------------------
datid                    | 220513
datname                  | redrock
numbackends              | 1
xact_commit              | 296
xact_rollback            | 2
blks_read                | 321
blks_hit                 | 9137
tup_returned             | 87291
tup_fetched              | 2768
tup_inserted             | 6
tup_updated              | 9
tup_deleted              | 0
conflicts                | 0
temp_files               | 0
temp_bytes               | 0
deadlocks                | 0
checksum_failures        | [null]
checksum_last_failure    | [null]
blk_read_time            | 4.25
blk_write_time           | 0
session_time             | 3954923.837
active_time              | 90.272
idle_in_transaction_time | 0
sessions                 | 14
sessions_abandoned       | 0
sessions_fatal           | 0
sessions_killed          | 0
stats_reset              | 2025-07-18 12:19:08.396411+08

这些信息对于生成监控图表非常有用,特别是生成 active_time 的变化曲线会很有意义。

非常不错的体验,感谢所有参与的社区人员。

参考

提交日志:https://git.postgresql.org/pg/commitdiff/960869da0803427d14335bba24393f414b476e2c