主要观点:作者回忆初涉服务器端应用时对数据库的疑惑,后意识到数据库的重要性及复杂性,以 Postgres 为例介绍其存储数据的方式,包括各种文件和文件夹的作用、数据在磁盘上的存储结构(如堆、页等)、修改和删除数据的过程以及索引的工作原理等。
关键信息:
- Postgres 存储数据的目录为
/var/lib/postgresql/data
,包含多个文件夹和文件,如base/
、global/
等,每个文件夹都有特定用途。 - 数据库相关术语,如数据库集群、连接、会话、事务、快照、模式、表、行、元组等。
- 创建新数据库并加载数据的过程,如创建
blogdb
数据库并导入国家数据。 - 数据库文件结构,如
pg_class
对象与表、索引等的关系,页的布局(包括头、行指针、特殊数据、自由空间等)。 - MVCC 机制用于处理并发访问数据,更新和删除数据时创建新元组并标记旧数据为删除,真空操作清理死元组。
- 索引工作原理与表类似,只是存储的是索引数据而非全表数据。
重要细节: - 系统默认创建
postgres
、template0
、template1
数据库,其文件夹名为 OID。 - 页默认大小为 8KB,表文件大小为 32KB 时包含 4 页,可通过
pageinspect
扩展查看页头信息。 - 数据存储时各列相邻,大值存储在单独关系中(TOAST)。
- 逻辑解码、检查和默认禁用等相关细节及相关参考资料等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。