PostgreSQL 计划优化性能并降低内存管理开销
Postgres 的 David Rowley提交了一项重要的修改,旨在提升 PostgreSQL 性能并减少内存管理开销。此举将 chunk header 的大小从 16 字节减少到了 8 字节: 此处所做的更改将我们所有 3 种内存上下文类型的 chunk header 大小减少到仅 8 个字节。对于中小型分配,这显着增加了我们可以在给定 chunk 上放置的 chunk 数,从而更有效地使用内存。 此外,此 commit 彻底改变了指向 palloc 内存的指针必须直接以指向拥有内存上下文的指针作为前缀的规则;相反,我们现在坚持它们直接以 8 字节值作为前缀,其中最不重要的 3 位被设置为一个值,以指示指针属于哪种类型的内存上下文。使用这 3 位作为索引(称为 MemoryContextMethodID)到存储每种内存上下文类型的方法的新数组,我们现在可以将给定函数的指针(例如 pfree() 和 repalloc() )传递给特定于该上下文实现的函数,以允许他们设计自己的方法来查找拥有给定分配的内存块的内存上下文。 更多细节可以查看此 commit。 Phoronix 指出,在...

