任何人在即将到来的PostgreSQL 15可能观察到一个后台进程的失踪。

如果我们拿这个和PostgreSQL 14:

是的,“数据收集器”不见了,这是一去不复返了。的一个主要瓶颈和头痛是一去不复返了。

数据收集器是干什么的?

新手用户可能想知道它是什么和为什么它需要PG 14和旧版本。至少有几个用户感到困惑关于表级统计信息收集(分析),用于查询计划。但这是不同的。PostgreSQL跟踪所有活动的每一个过程累积统计如表或索引扫描,多少次,当最后一个真空或者autovacuum跑在桌子上,或者多少次autovacuum跑在桌子上,等。所有可用的数据收集器收集的信息是通过不同pg_stat_ *视图。

是什么错了吗?

因为每个后端PostgreSQL的会话是一个个人的过程,收集统计数据和传输不是一项容易的任务。每个后端发送信息活动他们做了一个“数据收集器”的过程。这种通信发生在使用UDP套接字。这种方法有很多问题,这不是一个可伸缩的模型。用户经常报道不同类型的问题1。陈旧的统计,2。数据收集器运行,3。autovacuum不工作/开始等。

它曾经是很难理解是错误的,如果一个数据收集器有问题与特定的机器。

“数据收集器”的另一个副作用是它所能导致的IO。如果你启用调试级别2,你可能会看到消息不断PostgreSQL日志:

这可能会导致相当大的IO挂载点上您的数据目录的位置。
这是由参数的值指出的地方stats_temp_directory。在许多系统中,这将是pg_stat_tmp在数据目录。

在Ubuntu / Debian,它将在/var/run/postgresql,例如:

什么是新的在PostgreSQL 15吗?

而不是使用的文件和文件系统,统计现在使用动态共享内存。

你可以参考在这里提交Andres弗洛伊德的简介:

之前数据收集器收到通过UDP数据更新和共享统计数据定期通过编写到临时文件。这些文件可以达到几十兆字节,并写入到另一个的两倍。这一再阻止我们添加额外的有用
统计数据。

现在的统计数据都存储在共享内存。可变数目的统计数据对象存储在一个dshash散列表(动态共享内存)的支持。Fixed-numbered数据存储在共享内存。

pgstat的头。c包含架构的概述。

数据收集器不需要了,删除它。

利用事务统计下降的基础设施中引入之前提交统计条目不能“泄露”了。之前泄露的统计数据是下降了pgstat_vacuum_stat(),从[汽车]真空。Onsystems许多小关系pgstat_vacuum_stat()可能会相当
贵了。

现在副本数据条目对象下降下降,没有必要再重置统计当从清洁开始关闭复制品。

显然,参数stats_temp_directory已经一去不复返了。所以我们不需要pg_stat_tmp的目录中创建数据目录(或其他位置),所有的数据文件生成和读取。然而,这个目录是保留不打破许多扩展pg_stat_statements,这取决于目录。目录是空的,直到加载扩展库,例如,如果我们加载pg_stat_statements库,文件出现在目录中。

当然,扩展并不是免费的。他们携带自己的成本。

在新的架构,大多数数据更新首先积累在每个过程“等待”(每个后端有一个backend-local hashtable)。“等待”在某种意义上,它们积累但尚未提交共享数据系统。这是后刷新到共享内存后提交或超时。

由于数据更新并发而有人试图读取,读一致性进入画面。所以PostgreSQL 15了新的参数:stats_fetch_consistency这三个值吗没有一个,缓存快照

没有一个”是最有效的。但这不会给读一致性查询,希望如果有监控。raybet雷竞技竞猜在线官网但应该可以的使用。”缓存“确保重复访问产生同样的价值观,这涉及如可利用的查询是至关重要的。”快照“交互式地检查数据时可以有用但具有更高的开销。默认的是“缓存”。

如果是在共享内存,重启它如何生存?

他们写入文件系统检查点进程关闭前再一次加载启动的启动过程。像往常一样,数据会被丢弃如果有崩溃。

这将影响我的监控工具/脚本?raybet雷竞技竞猜在线官网

所有数据监控视图raybet雷竞技竞猜在线官网pg_stat_ *将继续工作。但是,请确保选择适当的值stats_fetch_consistency。如前所述,pg_stat_tmp目录保存不打破扩展开发使用这种方法。然而,它是扩展开发者对PostgreSQL 15彻底地测试扩展

还有什么?

像我这样的人使用PostgreSQL等待事件明白PostgreSQL和会议支出时间。数据收集和分析的工具pg_gather我们用在我们的日常生活中,利用这些等待事件分析理解问题。介绍了三个新的等待事件为更好的监控。raybet雷竞技竞猜在线官网

PgStatsDSA 等待数据动态共享的内存分配器访问
PgStatsHash 等待数据共享内存访问哈希表
PgStatsData 等待共享内存统计数据访问

与所有的开销数据收集器及其维护,其他子系统,如autovacuum有更少的工作要做。

此外,经常监视工具,查询统计raybet雷竞技竞猜在线官网信息将导致更少的系统上的负载。

由于社区

由于整个PostgreSQL社区,尤其是黑客,这惊人的进步。整个讨论开始四年的时候Kyotaro Horiguchi开始讨论想法和补丁。最终物化的伟大作品Andres Freund,梅勒妮Plageman,团队。我们可以看到它确实是伟大的团队合作的许多贡献者像Alvaro Herrera,大卫·G·约翰斯顿托马斯·芒罗,托马斯Vondra,阿瑟·Zakirov安东尼Houska,贾斯汀Pryzby,汤姆巷,藤井正雄,格雷格•斯塔克(Robert Haas,斯蒂芬·弗罗斯特,伯特兰Drouvot,马格努斯Hagander,和许多其他人。

是时候庆祝PostgreSQL变得苗条和修剪而获得更多的功能。

订阅
通知的
客人

1评论
最古老的
最新的 大多数投票
内联反馈
查看所有评论
查理Arehart

很有帮助。谢谢你调用这个Jobin。