物理存储:
数据库的文件默认保存在initdb时的数据目录中,数据目录中存放了许多不同类型的文件,表文件、索引文件、数据库运行日志、预写日志、参数文件等。
-bash-4.2$ tree -L 1 -d /pgdata/10/data
/pgdata/10/data --数据目录
├── base --表和索引文件存放目录
├── global --影响全局的系统表存放目录
├── pg_commit_ts --事务提交时间戳数据存放目录
├── pg_dynshmem --被动态共享所使用的文件存放目录
├── pg_logical --用于逻辑复制的状态数据
├── pg_multixact --多事务状态的数据
├── pg_notify --LISTEN/NOTIFY状态的数据
├── pg_replslot --复制槽数据存放目录
├── pg_serial --已提交的可序列化信息存放目录
├── pg_snapshots --快照
├── pg_stat --统计信息
├── pg_stat_tmp --统计信息子系统临时文件
├── pg_subtrans --子事务状态数据
├── pg_tblspc --表空间
├── pg_twophase --预备事务状态文件
├── pg_wal --事务日志(预写日志)
└── pg_xact --日志提交状态的数据存放目录
数据库有两个基础的对象 一个是oid,一个是表空间。
oid是数据库对象的标识。
表空间实际上是文件系统中的一个位置链接,即一个目录,它是一个逻辑上的概念,目录是它的物理存在方式。数据库中创建的对象(表、索引、数据库对象)都保存在表空间中。postgresql初始化完成后,会有两个默认的表空间,一个是pg_default,如果用户建表时没有指定表空间,所有新建的表都会放在pg_default中,另一个是pg_global,存放的是整个实例数据库所共享的系统表。