Postgresql数据库体系结构

  • 时间:
  • 浏览:2
  • 来源:uu快3游戏_uu快3计划_苹果版

聚簇逻辑内部结构

聚簇物理内部结构

database cluster物理上是有有有1个 base directory(PGDATA),包括或多或少子目录和文件

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

表空间

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

数据库是如可进行读写操作的呢?下文给出有有有1个简单的描述,后期结合相关内容会有更完全的描述

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

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

如下有有有1个存储区表示

存储内部结构

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

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

数据库内部内部结构,管理表和索引通过OID

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

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

pd_checksum--存储page的校验值

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

数据文件

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

现在插入一行数据,内部结构如下

**cluster>'base'>database>object

1顺序读(Sequential scan)

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

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

数据库内部内部结构,管理数据文件(表和索引对应的)通过可变的relfilenode

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

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

聚簇

数据库

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

内部结构如下

tuple的读写土土办法

page内部结构包括3累积

完全描述参考官方文档

数据文件内部内部结构内部结构

内部结构如下

机构如下

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