Postgresql数据库体系结构

  • 时间:
  • 浏览:0
  • 来源:uu快3规律_uu快3下载地址_窍门

pg_internal.init--缓存系统文件,加快系统表读取传输传输速率

**cluster>'base'>database>object

database cluster物理上是一个 base directory(PGDATA),包括这些子目录和文件

全部描述参考官方文档

pg_control--控制文件,用于存储全局控制信息

pg_filenode.map--系统表的OID与具体文件名进行硬编映射

tablespace--独立于base目录,是一个 额外的数据存储区data area

如下一个 存储区表示

page形态学 包括3帕累托图

注意:The maximum file size of tables and indexes can be changed using the configuration, option --with-segsize when building PostgreSQL.

聚簇逻辑形态学

聚簇物理形态学

数据库是怎么能能进行读写操作的呢?下文给出一个 简单的描述,后期结合相关内容会有更全部的描述

假设一个 表只涵盖一个 page,一个 page只包括一个 heap tuple

pd_lsn--存储page最新更改时,wal日志的lsn信息

pd_checksum--存储page的校验值

形态学 如下

存储形态学

database cluster > database > database object 涵盖与被涵盖的关系。

现在插入一行数据,形态学 如下

1顺序读(Sequential scan)

2索引读(B-tree index scan) --TID value of the obtained index tuple is '(block = 24, Offset = 2)'

数据库实物,管理数据文件(表和索引对应的)通过可变的relfilenode

cluster>'tablespace'>[database]>object**

pd_lower, pd_upper--pd_lower指向line pointer尾部;pd_upper指向最新heap tuple的头部

pd_special--主要用于索引,在表中,指向最后一个 page

聚簇

数据库

表空间

单个文件大小小于1G的表或索引,存储在所属数据库目录下,每个表或索引有的是我本人的OID。

数据库实物,管理表和索引通过OID

形态学 如下

https://www.postgresql.org/docs/current/storage-file-layout.html

oid2name — resolve OIDs and file nodes in a PostgreSQL data directory

tuple identifier (TID)--为了在表中标识元组,在实物使用了元组标识符(tid)。tid涵盖一对值,涵盖tuple的page的block numbers,以及指向该tuple的line pointer的偏移编号。这是一个 典型的索引用法,用来查找tuple数据。此外,heap tuple总大小超过2KB(约1/4 8KB),使用五种TOAST (The Oversized-Attribute Storage Technique)的依据进行管理

机构如下

数据文件实物形态学

tuple的读写依据

数据文件