Postgresql - 内部数组处理 - 数组类型或指针类型

Mar*_*tin 4 postgresql array

我有一个问题,关于 Postgres 中数组列的内部处理。引擎是否将其作为具有内存分配的经典数组来处理,还是以某种方式是指针列表。

知道会很有趣 - 我有几个关于性能的问题需要回答...... :)

Cra*_*ger 6

数组定义src/includes/utils/array.h以及src/backend/utils/adt/arrayfuncs.c其他array*文件中src/backend/utils/adt/

数组是一个VARLENA(参见src/backend/utils/adt/varlena.c),它是一个palloc()'d 类型,一个围绕 的范围存储包装器malloc()。数组是块分配的数据,而不是链表。

  • 很高兴能拥有对 DBA.SE 上的 RDBMS 源代码级别了解的专家的 PostgreSQL 专业知识,对吧?:) (2认同)