Postgres 如何在磁盘上存储数据 - 这篇绝对引人入胜 | drew 的开发博客

主要观点:作者回忆初涉服务器端应用时对数据库的疑惑,后意识到数据库的重要性及复杂性,以 Postgres 为例介绍其存储数据的方式,包括各种文件和文件夹的作用、数据在磁盘上的存储结构(如堆、页等)、修改和删除数据的过程以及索引的工作原理等。
关键信息:

  • Postgres 存储数据的目录为/var/lib/postgresql/data,包含多个文件夹和文件,如base/global/等,每个文件夹都有特定用途。
  • 数据库相关术语,如数据库集群、连接、会话、事务、快照、模式、表、行、元组等。
  • 创建新数据库并加载数据的过程,如创建blogdb数据库并导入国家数据。
  • 数据库文件结构,如pg_class对象与表、索引等的关系,页的布局(包括头、行指针、特殊数据、自由空间等)。
  • MVCC 机制用于处理并发访问数据,更新和删除数据时创建新元组并标记旧数据为删除,真空操作清理死元组。
  • 索引工作原理与表类似,只是存储的是索引数据而非全表数据。
    重要细节:
  • 系统默认创建postgrestemplate0template1数据库,其文件夹名为 OID。
  • 页默认大小为 8KB,表文件大小为 32KB 时包含 4 页,可通过pageinspect扩展查看页头信息。
  • 数据存储时各列相邻,大值存储在单独关系中(TOAST)。
  • 逻辑解码、检查和默认禁用等相关细节及相关参考资料等。
阅读 12
0 条评论