暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL 优化性能并降低内存管理开销

原创 黎青峰 2022-10-17
484

今天早上,开源 PostgreSQL 数据库服务器里出现了一个有趣的提交内容

Postgres 的 David Rowley 进行了一项相当重大的更改,以提高该数据库服务器的性能并减少内存管理的开销。该更改将块头大小的大小从 16 个字节减少到 8 个字节,反过来,这项工作应该会导致更有效的内存使用。

此处所做的更改将我们所有 3 种内存上下文类型的块头大小减少到仅 8 个字节。对于中小型分配,这显着增加了我们可以在给定块上放置的块数,从而更有效地使用内存。

此外,此提交彻底改变了指向 palloc 内存的指针必须直接以指向拥有内存上下文的指针作为前缀的规则,相反,我们现在坚持它们直接以 8 字节值作为前缀,其中最不重要的 3 -bits 设置为一个值,以指示指针属于哪种类型的内存上下文。使用这 3 位作为索引(称为 MemoryContextMethodID)到存储每种内存上下文类型的方法的新数组,我们现在能够将给函数的指针传递给函数,例如 pfree() 和 repalloc()特定于该上下文实现,以允许他们设计自己的方法来查找拥有给定分配的内存块的内存上下文。
...


更多关于内存开销的 PostgreSQL 性能优化的详细信息可以通过这个提交找到。

早先减少 PostgreSQL 内存开销的讨论看到,Rowley 在 Ryzen Threadripper 工作站上的只读简单工作负载的吞吐量性能提高了 17%。


当它在稳定的 PostgreSQL 版本中首次亮相时,看看这种内存开销减少如何在现实世界中发挥作用肯定会很有趣。但是由于 PostgreSQL 15 已经在今年晚些时候发布之前进行了分支,因此预计这种变化要到 PostgreSQL 16 才能实现。


原文标题:PostgreSQL Optimizes Performance & Lower Memory Management Overhead

原文作者:Michael Larabel

原文地址:https://www.phoronix.com/news/PostgreSQL-Perf-Memory-Overhead


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论