重庆思庄Oracle、Redhat认证学习论坛

标题: PostgreSQL的stats collector进程 [打印本页]

作者: jiawang    时间: 前天 19:47
标题: PostgreSQL的stats collector进程
本帖最后由 jiawang 于 2024-9-22 20:27 编辑

在 PostgreSQL 数据库中,stats collector 进程(统计信息收集器进程)是一个重要的后台进程,负责收集和报告数据库操作的统计信息。这些统计信息对于查询优化和性能监控至关重要。


stats collector 进程的主要职责
收集统计信息:收集数据库中的不同对象(如表、索引)的使用情况和活动统计数据。
报告统计数据:将收集到的统计数据报告给系统,查询优化器和监控工具可以利用这些数据来做出更智能的决策。
维护统计视图:更新系统视图(如 pg_stat_* 系列视图),这些视图可以被DBA和监控工具查询以了解数据库的运行状况。
主要统计信息
stats collector 进程主要收集以下类型的统计信息:


表和索引活动:如表的记录插入、更新、删除操作次数,索引的扫描次数等。
函数调用统计:记录数据库中函数的调用次数和总执行时间。
缓冲区操作统计:如缓存命中率、缓冲区读/写次数等。
会话和数据库连接统计:如当前活动会话数、连接次数等。


配置参数
在 PostgreSQL 的 postgresql.conf 配置文件中,有一些参数用于控制 stats collector 进程的行为:


track_activities:如果设置为 on,则收集当前活动会话的命令以及相关状态信息。
track_counts:如果设置为 on,则收集表、索引和数据库活动的计数(如堆表扫描次数、索引扫描次数等)。
track_io_timing:如果设置为 on,则统计 I/O 操作的时间。
track_functions:控制函数调用的统计信息,选项为 none、pl、all。
stats_temp_directory:临时存储统计信息文件的目录。


示例:
[pg12@sztech ~]$ ps aux | grep postgres |grep -v grep
pg12       5561  0.0  0.3 274796 13688 ?        Ss   23:21   0:00 /home/pg12/soft/bin/postgres
pg12       5562  0.0  0.0 274952  2072 ?        Ss   23:21   0:00 postgres: startup   recovering 000000050000000000000035
pg12       5563  0.0  0.0 274796   860 ?        Ss   23:21   0:00 postgres: checkpointer   
pg12       5564  0.0  0.0 274796  1900 ?        Ss   23:21   0:00 postgres: background writer  
pg12       5565  0.0  0.0 129340   964 ?        Ss   23:21   0:00 postgres: stats collector   
pg12       5566  0.1  0.0 279660  2460 ?        Ss   23:21   0:00 postgres: walreceiver   streaming 0/35013BD0
pg12       5568  0.1  0.1 275852  5692 ?        Ss   23:21   0:00 postgres: repmgr postgres 192.168.10.101(48790) idle
...


在上面的输出中,可以看到 stats collector 。

stats collector 进程在 PostgreSQL 中扮演了关键角色,通过收集和报告数据库系统的统计信息,辅助查询优化器和监控工具更好地做出优化和报表决策。


pg15版本以后就没有stats collector进程了
4E47FEA84C59D4B5A2A10002D43D1E37.png
登录/注册后可看大图