本帖最后由 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进程了
|