PostgreSQL 监控统计信息,脾气总是捉摸不定!

数据库 PostgreSQL
PostgreSQL 的监控统计信息,有时候的表现会让人大吃一惊。下面我们来看看重置累积的统计信息的作用、何时会发生统计信息的重置,以及它对 PostgreSQL 数据库的影响。

了解累积统计信息的重置

当 PostgreSQL 重置累积统计信息系统收集的统计信息时,它会将所有统计计数器重置为零。这包括有关表访问、索引使用情况、函数执行等方面的数据。

收集类统计信息视图中的内容会发生变化,包括pg_stat_all_tables、pg_stat_all_indexes、pg_stat_user_functions、pg_statio_all_tables、pg_statio_all_indexes和pg_stat_statements等。

累积统计信息何时会重置?

PostgreSQL 将临时的统计数据存储在一个单独的目录中,该目录由 stats_temp_directory 参数确定。它可以是一个相对于数据目录的路径,也可以是一个绝对路径,默认为pg_stat_tmp。将其指向一个基于内存的文件系统可减少物理 I/O 的消耗,还可以提高性能。

当统计信息收集器退出时,PostgreSQL 会通过pg_stat目录下的统计信息文件更新累积的统计信息。保存的统计数据可以在下次启动时重用。当发生检查点时,这些统计数据不会被刷新到磁盘文件中,并且当统计数据更改时,也不会有相关的 WAL 记录。

在某些情况下,累积的统计信息会发生重置,或者统计数据会失效:

• 使用 pg_stat_reset 或 pg_stat_statements_reset 函数重置累积统计信息。

• 在流式复制中,当主服务器发生故障而备用服务器成为新的主服务器时,累积的统计数据会失效。

• 还原一个使用 pg_basebackup 进行的备份。在一个 PostgreSQL 基础备份中,pg_stat_tmp目录的内容会被排除在外。

• 使用连续归档备份进行恢复(PITR)。

• PostgreSQL 服务器崩溃或异常关机。

• 数据库主版本的升级。

重置统计信息的影响

重置统计信息可以清除历史的使用情况数据,但不会影响数据库本身的性能或可用性。但是,这会导致有关性能和使用情况的历史数据丢失,而这些数据对于诊断长期趋势或问题可能会很有用。

此外,当一些第三方监控工具定期调用pg_stat_reset()时,自动清理工作进程可能无法正常工作。pg_stat_reset()带来的问题是,它会将n_dead_tup和n_mod_since_analyze重置为零。如果有人按月重置统计数据,那么这可能意味着,那些平时自动清理的调度频率低于每月一次的表,可能永远都不会触发自动清理,至少在防止事务 ID 环绕的清理工作访问它之前是不会的。

责任编辑:武晓燕 来源: 红石PG
相关推荐

2013-04-23 10:42:55

JavaScriptthis

2010-09-29 09:41:55

WiFi

2018-06-29 14:37:01

Intel服务器路线图

2014-03-13 15:14:19

Zabbix监控报警Zabbix

2015-07-17 11:52:14

2018-04-04 12:05:04

Postgre数据planner

2012-03-07 17:00:22

响应式Web

2009-07-03 08:42:37

查询监控工具PostgreSQL

2022-02-17 13:32:04

SpringBootSQL连接池

2010-01-22 17:21:32

C++语言

2019-08-21 14:56:58

PostgreSQLDBA数据库

2021-01-08 10:47:07

机器学习模型算法

2019-05-23 08:00:00

Webalizer网站统计开源

2024-04-26 13:13:30

监控云环境参数

2010-09-01 10:38:47

DB2统计信息

2019-08-09 08:33:36

PostgreSQL数据库数据

2018-03-01 06:10:41

2013-11-01 10:14:31

轻应用百度

2023-12-28 18:02:12

2022-12-13 10:05:13

MySQL数据库
点赞
收藏

51CTO技术栈公众号