作者:瀚高PG实验室 (Highgo PG Lab)- 海无涯
PostgreSQL的统计收集器 是一个支持收集和报告服务器活动信息的子系统。目前,这个收集器可以对表和索引的访问计数, 计数可以按磁盘块和个体行来进行。它还跟踪每个表中的总行数、每个表的清理和分析动作的信息。 它也统计调用用户定义函数的次数以及在每次调用中花费的总时间。
PostgreSQL还支持报告关于系统中正在发生什么的动态信息, 比如当前其它服务器进程正在执行的命令,系统中存在的其他链接。这是独立于收集器进程的功能。
因为统计收集给查询执行增加了一些负荷,系统可以被配置为收集或不收集信息。 这是由配置参数控制的,它们通常在 postgresql.conf 中设置 (关于设置配置参数的细节请见第 数据库的监控(三))。
参数track_activities启动监控当前被任意服务器进程执行的命令。
参数track_counts控制是否收集关于表和索引访问的统计信息。
参数track_functions启用对用户定义函数使用的跟踪。
参数track_io_timing启动对块读写次数的监控。
通常这些参数被在 postgresql.conf 中设置, 因此它们作用于所有服务器进程,但是可以在单个会话中使用 SET命令打开或关闭它们 (为了阻止普通用户对管理员隐藏他们的活动,只允许超级用户使用 SET 来改变这些参数)。统计收集器通过临时文件将收集到的信息传送给其他PostgreSQL进程。 这些文件存储在stats_temp_directory参数命名的目录中, 默认是 pg_stat_tmp 。为了得到更好的性能,stats_temp_directory 可以指向一个基于 RAM 的文件系统来降低物理 I/O 需求。 当服务器干净地关闭时,一份统计数据的永久拷贝被存储在 pg_stat 子目录中,这样统计数据可以在服务器重新启动时保留。当在服务器启动时执行恢复时 (例如立即关闭、服务器崩溃以及时间点恢复之后),所有统计计数器会被重置。