前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【赵渝强老师】PostgreSQL的逻辑存储结构

【赵渝强老师】PostgreSQL的逻辑存储结构

原创
作者头像
赵渝强老师
发布2024-11-25 09:02:17
发布2024-11-25 09:02:17
1260
举报
文章被收录于专栏:PostgreSQLPostgreSQL

PostgreSQL的逻辑存储结构主要是指数据库中的各种数据库对象,包括:数据库集群、数据库、表、索引、视图等等。所有数据库对象都有各自的对象标识符oid(object identifiers),它是一个无符号的四字节整数,相关对象的oid都存放在相关的系统目录表中,比如数据库的oid和表的oid分别存放在pg_database,pg_class表中。下图展示了PostgreSQL数据库的逻辑存储结构。

视频讲解如下:

下面对PostgreSQL数据库中的各种数据库对象进行说明。

  • 数据库集群-Database Cluster 它也叫数据库集簇,是指由单个PostgreSQL数据库服务器实例管理的所有数据库集合。组成数据库集群的这些数据库使用相同的全局配置文件和监听端口、共用数据库的后台进程和内存结构。一个数据库集群可以包括:多个数据库、多个用户以及数据库中的所有对象。

  • 数据库-Database 在PostgreSQL中,数据库本身也是数据库对象。不同的数据库在逻辑上彼此分离,除数据库之外的其他数据库对象(例如:表、索引等等)都属于它们各自的数据库。

  • 表空间-Tablespace 数据库在逻辑上分成多个存储单元,该单元称作表空间。表空间用作把逻辑上相关的数据结构放在一起。数据库逻辑上是由一个或多个表空间组成。在数据库初始化的时候,会自动创建pg_default和pg_global两个表空间。其中:

pg_global:该表空间用于存放系统表。 pg_default:创建表时的默认表空间,该表空间的物理文件存储在数据目录中的base目录中,如:/home/postgres/training/pgsql/data/base。

  • 模式-Schema 当创建一个数据库时,会为其自动创建一个名为“public”的默认Schema。Schema是数据库中的命名空间,在数据库中创建的所有对象都是在Schema中创建。一个用户可以从同一个客户端连接中访问不同的Schema。而不同的Schema中可以有多个同名的表、索引、视图、序列、函数等等各种不同的数据库对象。

  • 段-Segment 一个段是分配给一个逻辑结构,如:一个表、一个索引或其他对象的一组区,它是数据库对象使用空间的集合。段可以有表段、索引段、回滚段、临时段和高速缓存段等,而最常用的段就是表段和索引段。

  • 区-Extent 区是数据库存储空间分配的一个逻辑单位,它由连续数据块所组成。一个段是由一个或多个磁盘盘区组成。当一段中间所有空间已完全使用,PostgreSQL会自动为该段分配一个新的磁盘盘区范围。

  • 块-Block(Page) 数据块是PostgreSQL 管理数据文件中存储空间的单位,为数据库使用的I/O的最小单位。数据库是最小的逻辑存储单位,其默认值8K。通过参数block_size可以查看当前数据库的数据块大小。
代码语言:sql
复制
postgres=# show block_size;

 block_size 
------------
 8192
(1 row)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档