PostgreSQL数据库存储方式咨询:是否与SQLite一样单文件存单库?
PostgreSQL vs SQLite 存储机制详解
嘿,很高兴帮你理清这两个数据库在存储上的差异,它们的设计思路可是差不少呢:
1. PostgreSQL是否和SQLite一样用单个文件存单个数据库?
答案是完全不一样。SQLite的单文件设计是它的标志性特点,整个数据库的所有数据、元信息都打包在一个文件里,非常适合轻量嵌入式场景。但PostgreSQL是典型的客户端-服务器架构数据库,它的存储方式要复杂得多,根本不是单文件的路子。
2. PostgreSQL的具体存储机制是怎样的?
PostgreSQL的存储是基于目录和多文件的结构,和SQLite的单文件模式天差地别:
- 每个数据库对应一个独立的目录:在PostgreSQL的数据目录(通常叫
PGDATA)下的base文件夹里,每个数据库会以自己的OID(系统分配的唯一对象标识符)命名成一个子目录,所有属于这个数据库的数据都存在这个目录下。 - 数据库内的对象拆分成多个文件:比如一张表,不会存在一个单独的文件里,而是会被分成多个最大1GB的“段文件”(这个大小可以通过
segment_size参数配置)。当表的数据超过1GB时,系统会自动生成新的段文件,文件名格式类似12345.1、12345.2——前面的数字是表的OID,后面的是段的编号。索引、视图等其他对象也都是以类似的多文件方式存储。 - 还有配套的辅助目录:
PGDATA下还有pg_wal(存储预写日志,保证数据一致性)、pg_tblspc(管理自定义表空间,允许把数据存在其他磁盘路径)、pg_stat_tmp(临时统计数据)等多个子目录,各司其职支撑数据库运行。 - 多数据库共存毫无压力:在同一个PostgreSQL实例下,你可以创建N个独立的数据库,它们各自对应
base下的不同目录,相互隔离,完全不存在“一个文件不能存多个数据库”的限制——因为它从设计之初就没采用单文件存储的模式。
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

