当前位置: 首页 > news >正文

【赵渝强老师】PostgreSQL的物理存储结构

1

PostgreSQL在执行initdb的数据库集群初始化时会指定一个目录。该目录通过环境变量$PGDATA来表示。当数据库集群初始化完成后,会在这个目录生成相关的子目录以及一些文件。这些生成的文件就是PostgreSQL的物理存储结构中的文件。如下图所示。

2

如上图所示,环境变量$PGDATA指向的目录就是/home/postgres/training/pgsql/data。

下表说明了其中的每个目录的功能与作用。

3

PostgreSQL数据库的物理存储结构主要是指硬盘上存储的文件,包括:数据文件、日志文件、参数文件、控制文件、WAL预写日志文件等等。

image.png
点击这里查看视频讲解:【赵渝强老师】PostgreSQL的物理存储结构

一、数据文件

顾名思义,数据文件用于存储数据,文件名以oid命名。对于超出1G的数据文件,PostgreSQL会自动将其拆分为多个文件来存储,而拆分的文件名将由pg_class中的relfilenode字段来决定。

二、日志文件

PostgreSQL的日志文分为运行日志、WAL预写日志、事务日志和服务器日志。下面分别进行介绍。

2.1 运行日志(pg_log)

在默认的情况下,运行日志没有开启。通过查看主postgresql.conf文件的配置可以看到相关的参数设置,开启后会自动生成该日志文件。运行时日志一般是记录数据库服务器与数据库的状态,比如各种错误信息、定位慢查询SQL、数据库的启动关闭信息、发生检查点过于频繁等的告警信息等等。该日志有.csv格式和.log格式,建议使用.csv格式。

2.2 WAL预写日志(pg_xlog)

pg_xlog 这个目录是记录的Postgresql的WAL信息。WAL是Write Ahead Logging的缩写,即预写日志,它是保证数据完整性的一种标准方法。简单来说就是在PostgreSQL数据库中要对数据文件进行修改时必须先写入WAL日志信息,即当WAL日志记录完成了持久化,刷新到永久储存之后才能更改数据文件。根据这个原则就不需要在每次提交事务的时候都刷新数据到磁盘。因为当数据库出现宕机发生数据丢失时,可以重新执行WAL日志来达到恢复数据库的目的。因此WAL日志也可以叫做redo重做日志,因为任何没有写到数据文件上的改动都可以根据日志记录进行重做。在默认的情况下,单个WAL预写日志文件的大小是16M,通过参数wal_segment_size决定。

2.3 事务日志(pg_xact)

pg_xact是事务提交日志,记录了事务的元数据。默认开启。内容一般不能直接读。默认存储在目录$PGDATA/pg_xact/。

2.4 服务器日志

如果用pg_ctl启动的时候没有指定-l参数来指定服务器日志,错误可能会输出到cmd前台。下图展示了在启动数据库服务器时,使用“-l”参数生成的服务器日志文件,它记录了数据库的重要信息。

4

三、控制文件

控制文件记录了数据库运行时的一些信息,比如数据库oid、是否是打开状态、WAL的位置、检查点的信息等等。PostgreSQL的控制文件是很重要的数据库文件。控制文件默认保存在$PGDATA/global/pg_control目录下。

四、参数文件

PostgreSQL数据库的参数文件主要包括四个,它们分别是postgresql.conf、pg_hba.conf、pg_ident.conf和postgresql.auto.conf。

http://www.jsqmd.com/news/104407/

相关文章:

  • [创业之路]-734-没有权力的责任是奴役,没有责任的权力是腐败,没有利益的责任是忽悠。管得好,叫责权利统一;管不好,叫利权责倒挂。一流的组织:用责任牵引权力和利益;末流的组织:用利益和权力逃避责任
  • 【赵渝强老师】PostgreSQL中的模式
  • 工作者线程通信方式对比( postMessage()、MessageChannel、BroadcastChannel)
  • 合规即代码的延伸:国产 DevOps 平台如何利用平台扩展能力,自动验证信创基础设施的配置合规性
  • BJ-字符串
  • GSV1015@ACP#1015/2015产品规格详解及产品应用分享
  • 从“连接器”到“封装载体”:高多层板的进化
  • python编程实战(三)
  • [创业之路]-736-在组织中,责任意味着:“这件事成与败,板子打在我身上。”责任 = 该做的事(义务) + 出事我来扛(担当)
  • 【光子 AI】《Jeff Dean 传记:Google 工程师的传奇人生》
  • 模型性能监控仪表盘:实时追踪EmotiVoice服务状态
  • [创业之路]-736-目标和结果导向:CTO职责及完成职责要求所具备的能力要求:用技术驱动业务增长、构建长期竞争力,并对技术投入的 ROI(投资回报率)负责。不是“管代码的头”,而是“技术变现的操盘手
  • 校园快递代取|基于springboot + vue校园快递代取系统(源码+数据库+文档)​
  • 基于SpringBoot的高校迎新管理系统毕业设计项目源码
  • 化工厂气象站:国产防爆气象站
  • 如何用EmotiVoice创建会‘生气’或‘开心’的AI角色?
  • 如何设计一个盲盒系统
  • 当代中国哲学之光:颜廷利——引领东方智慧走向世界的思想巨擘
  • 【赵渝强老师】PostgreSQL的逻辑存储结构
  • 名藏大道,悟则大同——《升命学说》中的分享智慧与文明升维
  • 成都集成墙板源头厂家哪家靠谱?求专业推荐 - 朴素的承诺
  • 2025年北京制冷螺杆压缩机维修权威推荐榜单:制冷离心机压缩机/压缩机/压缩机耐氟电机维修精选 - 品牌推荐官
  • EmotiVoice语音合成系统灰度经验复盘与知识沉淀
  • vue基于springboot的医院物资器械维修巡检管理系统的设计与开发没论文
  • 【赵渝强老师】史上最详细的PostgreSQL体系架构介绍
  • vue基于springboot的在线数据二手闲置商品交易平台
  • JavaScript 上下文间消息传递方式对比(结构化克隆算法、可转移对象、共享数组缓冲区)
  • 基于springboot服装商店管理与分析系统毕业设计项目源码
  • 2025十大益生菌品牌选购干货:幽定妥入选TOP10,国家认可效果稳 - 博客万
  • vue基于springboot的学习资料资源分享共享平台的研究和实现