首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >PostgreSQL-系统表和系统模式

PostgreSQL-系统表和系统模式

作者头像
运维小路
发布2026-01-26 12:35:30
发布2026-01-26 12:35:30
1290
举报
文章被收录于专栏:运维小路运维小路

作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。

MySQL

PostgreSQL(本章节)

MongoDB

Redis

Etcd

我们前面在介绍MySQL的的时候,用了4个小节来介绍数据库自带的4个库表,今天我们就用一个小节来介绍PostgreSQL的默认的模式及库表。

一、系统模式(System Schemas)

系统模式是 PostgreSQL 预定义的命名空间,用于隔离系统对象与用户自定义对象,避免命名冲突。

  • 核心系统模式
    1. pg_catalog:最核心的系统模式,存储所有系统表、视图、数据类型等核心元数据,默认搜索路径包含此模式。
  1. information_schema:遵循 SQL 标准的模式,提供可读性更强的元数据视图,基于pg_catalog表构建,方便跨数据库兼容查询。
  2. pg_temp_xx(临时模式):每个会话独有的临时模式,存储临时表和临时函数,会话结束后自动清理。
  3. pg_toast:用于存储大对象(TOAST,The Oversized-Attribute Storage Technique),自动处理超过页大小的字段数据。
  • 关键特性
    • 系统模式的对象默认仅超级用户可修改,普通用户通常只有读取权限。
    • 用户可通过search_path参数控制模式的搜索顺序,避免访问系统对象时需显式指定模式名。 注意:这里的默认模式都是基于某个具体的库,当然里面有些数据是全局的。

二、系统表(System Tables)

系统表是存储数据库自身元数据的特殊表,记录数据库、表、列、索引、用户等所有对象的信息,PostgreSQL 启动和运行时依赖这些表的数据。

  • 核心系统表分类
    1. 数据库与对象管理
    2. pg_database(数据库信息)
  • pg_class(表、索引等关系对象) pg_attribute(表列信息)
    1. 索引与存储
    2. pg_index(索引定义)
    3. pg_toast_xxxx(大对象存储表)
    4. 用户与权限
    5. pg_user(数据库用户)
    6. pg_roles(角色信息)
    7. pg_permissions(权限配置)
    8. 数据类型与约束
    9. pg_type(数据类型定义)
    10. pg_constraint(表约束信息)
  • 关键特性 系统表默认存储在pg_catalog模式下,大部分为 “堆表”,部分系统表为特殊结构(如哈希表)以提升查询性能。

普通用户可查询系统表(如通过select * from pg_tables查看所有表),但修改系统表需超级用户权限,且直接修改可能导致数据库崩溃,不建议手动操作。

三、系统表与系统模式的关系

  • 系统表是系统模式的 “内容”,系统模式是系统表的 “容器”,所有系统表均归属某个系统模式(主要是pg_catalog)。
  • 用户查询元数据时,可通过information_schema的视information_schema.tables)或直接查询pg_catalog的系统表,前者更易读,后者信息更完整。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MongoDB
    • 一、系统模式(System Schemas)
    • 二、系统表(System Tables)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档