PostgreSQL 的存储引擎:深入理解 Heap 表
当你使用 PostgreSQL 时,可能不会立刻想到“存储引擎”这个词,但其实它在背后默默管理着所有数据的读写。与 MySQL 不同,PostgreSQL 并不支持多种存储引擎的切换,它使用的是自己独有的 Heap 存储引擎,也被称为 Heap Table Engine。
简单来说,PostgreSQL 中每一张表——无论是用户创建的,还是系统自带的——其数据都以“堆表”(Heap Table)的形式存储。这里的“堆”并不是指数据结构中的堆,而是指数据行按插入顺序随意存放,没有预先强制的物理排序。这种设计让写入更加高效,因为新记录可以被直接追加到表的末尾或空闲空间中。
与此同时,PostgreSQL 使用一种叫做 MVCC(多版本并发控制)的机制来管理数据可见性。这意味着每次更新或删除操作并不会立即修改原始数据,而是生成新的版本,由系统根据事务的时间点来判断哪个版本应该被看到。这套机制深度依赖于 Heap 表的底层设计,例如每一行数据都包含隐藏的系统字段(如 xmin、xmax),来追踪事务的生命周期。
理解 Heap 表的工作方式,有助于我们更好地优化查询性能、理解索引行为,甚至排查事务冲突问题。比如,为什么长期不清理的表会导致“膨胀”?正是因为旧版本数据仍被保留,等待被 vacuum 清理。
总之,虽然 PostgreSQL 只有一个存储引擎,但它精巧的设计支撑了强大的事务处理和并发能力。掌握 Heap 表的核心原理,是深入 PostgreSQL 世界的钥匙之一。
评论
暂无评论,来做第一个评论的人吧。