postgresql_internals-14 记录
创始人
2024-03-20 06:18:05
0

梳理一下之前理解不太清楚的知识点,重点内容可能会再拆出来单独研究。

原书链接:Index of /

一、 数据组织

1. pg系统库

  • template0:用于从逻辑备份还原,或创建不同字符集的数据库,不可以修改
  • template1:真正的模板库,修改之后创建其他业务库时会以其为模板
  • postgres:常规db,可以自行决定是否用作业务库(一般不用)

2. 系统表(system catalog

  • 均以pg_开头
  • 部分系统表不属于任何数据库,但所有数据库均可访问它们

3. Schema

命名空间,在逻辑上相当于DB中的一个目录。

pg自带以下schema:

  • public:若无特殊设置,则为用户对象默认schema
  • pg_catalog:系统表的schema
  • information_schema:系统表的替代视图
  • pg_toast:用于toast对象
  • pg_temp:用于临时表

       search_path变量用于设置搜索路径,pg_catalog和pg_temp 这两个schema总是包含在其中(因此所有库中都能查到系统表和临时表),但默认不显示。

4. 表空间

       如果说schema是逻辑上的目录,表空间则是物理上一个真正的目录,它与DB可以是多对多的关系。主要用于冷热数据分层,可以将旧数据放在单独表空间并移到低性能磁盘。

  • pg_default:默认表空间,位于$PGDATA/base目录
  • pg_global:存储共享系统表(system catalog)的表空间,位于$PGDATA/global目录
  • 当用户创建表空间时,pg会自动在$PGDATA下创建同名目录,可以移到其他位置。

5. 数据文件与分支

  • 主文件:存储实际数据,以一串数字为文件名(对应pg_class. relfilenode字段,注意不一定是oid),默认如果超过1G,则为扩展出xxx.1,xxx.2这种文件
  • 空闲空间映射文件:fsm文件,保存页中可用空间的映射,在新数据插入时快速定位可用位置。既用于表也用于索引。
  • 可见性映射文件:vm文件,如果一个页中的所有元组都是可见的(或者均已冻结),vm文件中会将两个对应标志位设为1。后续可以跳过对这些页的vacuum,freeze操作,提升性能,另外在执行计划中也可以使用  index-only scans,更加高效。只用于表不用于索引。
  • 初始文件:init文件,仅对unlogged table可用

测试创建unlogged table

CREATE UNLOGGED TABLE t(a int);
INSERT INTO t VALUES (1);
SELECT pg_relation_filepath('t');

未完待续...

相关内容

热门资讯

央行:加强房地产金融宏观审慎管... 近日,中国人民银行发布了《中国金融稳定报告(2025)》。报告提出,下一步,中国人民银行将继续认真贯...
欣旺达:子公司被起诉,涉案金额... 欣旺达12月26日公告,子公司欣旺达动力作为被告于12月25日收到浙江省宁波市中级人民法院送到的民事...
阿尔及利亚立法认定法国殖民是“... 【文/观察者网 陈思佳】据美联社12月25日报道,阿尔及利亚议会24日通过一项法案,正式将法国在阿尔...
汇金股份(300368)披露提... 截至2025年12月26日收盘,汇金股份(300368)报收于14.75元,较前一交易日下跌0.07...
长沙婚姻家事律师 + 刑事辩护... 在长沙生活或工作中,若遭遇婚姻家事纠纷,如离婚财产分割、抚养权争议或刑事风险,如涉嫌犯罪被调查、面临...
央行最新发布,跨国公司迎政策利... 跨国公司跨境资金管理便利化迈出新步伐。 12月26日,中国人民银行、国家外汇管理局联合发布关于跨国公...
汉马科技(600375)披露公... 截至2025年12月26日收盘,汉马科技(600375)报收于5.87元,较前一交易日下跌3.93%...
吉利旗下威睿公司起诉欣旺达动力... IT之家 12 月 26 日消息,欣旺达电子股份有限公司今日发布公告,公司的子公司欣旺达动力于 20...
网购“10-9”枚卤蛋实得1枚... 极目新闻记者 张皓 河南一名大学生日前发视频称,他网购卤蛋时,商品页面标注的是“10-9枚”,他支付...
文投控股:因与索宝公司合同纠纷... 观点网讯:12月25日,文投控股公告披露,公司因与索宝(北京)国际影业投资有限公司的合同纠纷被诉,涉...