PG表空间

表空间

表空间

文件系统位置的一个目录,可以保存所有其他对象的容器,如表、索引等,有默认表空间、共享系统表表空间、自定义表空间

默认表空间中pg_default(base目录):

#目录名“1”是系统数据库template1各relation的存储目录

#目录数字“倒数第二”是系统数据库template0各relation的存储目录

#其他数字目录是用户建立的数据库目录

#目录的命名方法就是数据库的oid值

#FSM的文件记录每个数据块的空闲空间

#VM文件让vacuum高效工作,被标为无效的记录需要用vacuum来进行清理,需要一个文件来标识哪些数据块中存在无效记录来达到高效的清理。

共享系统表表空间pg_global(global目录):

$持有集群中所有数据库共享的系统表

自定义表空间:

*会在pg_tblspc目录下创建一个软链接,表空间oid->自定义表空间目录

*可以在创建表时指定表空间,也可以修改表空间,修改后原来表空间的文件为空

*数字目录为数据库目录,下面的文件为表文件

数据库的物理布局设计

每个数据库都会在$PGDATA/base下面生成一个子目录,文件名与数据库oid一一对应

数据库目录可以分布于多个表空间,也就是同一个数据库oid可以存在于不同表空间

模式与表空间

模式是逻辑存在的,它不受表空间的限制

表和索引的物理布局设计

每一个表和索引如果不超过1G大小,都只有一个文件

表或索引对象被创建后会生成以relfilenode编号命名的数据文件

relfilenode标识对象物理位置的数字标号,会随数据存放的变化位置变化而变化

函数pg_relation_filenode() 可以获得对象的relfilenode

表和索引也有和数据库一样的OID,另外还有一个relfilenode,这个值不会总是匹配OID,在发生一些truncate,reindex,cluster,vacuum full等相关的操作,会发生变化

开始oid和relfilenode是一样的,truncate等操作后,relfilenode会发生变化

表空间物理布局图

猜你喜欢

转载自blog.csdn.net/louxia_xiaohei/article/details/86663706