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

pg入门5—pg有哪些系统schema

在 PostgreSQL 中,除了用户创建的 schema 之外,系统还自动创建了一些系统 schema,用于管理数据库的元数据、系统信息以及维护操作。以下是 PostgreSQL 中的常见系统 schema:

1. pg_catalog

  • 用途pg_catalog 是 PostgreSQL 中最重要的系统 schema,存储数据库中的系统表、视图和元数据。所有关于数据库对象(如表、列、索引、权限、角色等)的信息都在这里。
  • 典型表
    • pg_database:列出所有数据库的信息。
    • pg_tables:列出所有表的信息。
    • pg_roles:列出所有用户和角色的信息。
    • pg_class:存储所有数据库对象的元数据(如表、索引、视图)。
    • pg_index:存储索引的元数据。
  • 访问方式:系统表在 pg_catalog 中,但默认不需要显式指定 schema。例如:
    SELECT * FROM pg_tables;

2. information_schema

  • 用途:这是一个标准 SQL 定义的 schema,用于提供数据库元数据的信息视图,这些视图可以用来查询数据库结构(例如表、列、权限、数据类型等),是一个跨数据库标准的元数据查询接口。
  • 典型视图
    • tables:列出所有表的信息。
    • columns:列出所有列的信息。
    • views:列出所有视图的信息。
    • schemata:列出所有 schema 的信息。
  • 区别:与 pg_catalog 不同,information_schema 提供的是标准化的元数据接口,方便跨数据库使用。

3. pg_toast

  • 用途pg_toast 是一个特殊的 schema,专门用于存储大对象(如大型文本字段、二进制数据等)。当一个表中的某列的数据超过了 PostgreSQL 的存储限制(大约 8 KB),这些超大数据会存储在 pg_toast 表中。
  • 自动管理pg_toast 是 PostgreSQL 自动管理的 schema,用户通常不需要直接操作它。
  • 典型表
    • pg_toast_<oid>:这些表存储超大字段的数据,名称以 pg_toast_ 开头,后跟关联表的 OID。
  • 注意:用户不会直接操作这些表,但 PostgreSQL 在处理大对象时会自动使用它们。

4. pg_temp

  • 用途pg_temp 是用于存储临时对象(如临时表、临时视图等)的 schema。每当会话创建临时对象时,PostgreSQL 会为该会话分配一个专用的临时 schema,通常以 pg_temp_ 为前缀。
  • 自动管理pg_temp schema 仅在会话期间存在,会话结束后自动删除。
  • 典型表:临时表和临时对象存储在该 schema 中,但这些对象只在当前会话中可见。

5. pg_toast_temp

  • 用途pg_toast_temp 用于存储临时大对象的数据。类似于 pg_toast,但它专门用于临时表或临时对象的数据超限时的存储。
  • 自动管理:它与 pg_temp 一样,只在会话期间存在,处理与会话相关的超大字段。

6. pg_internal(仅内部使用)

  • 用途:这个 schema 用于存储 PostgreSQL 内部使用的对象和函数。用户通常不会直接访问或操作 pg_internal 中的对象。

系统 schema 的作用与管理

这些系统 schema 是 PostgreSQL 内部功能和操作的基础,它们存储系统表、系统视图、临时数据和内部对象。用户可以通过 pg_cataloginformation_schema 获取数据库结构和元数据信息,但不应该直接操作 pg_toastpg_temp 等系统表或 schema。

如何查看数据库中的所有 schema:

可以使用以下查询查看当前数据库中的所有 schema,包括系统 schema 和用户定义的 schema:

SELECT schema_name FROM information_schema.schemata;

总结:

PostgreSQL 中的主要系统 schema 包括:

  1. pg_catalog:存储数据库的系统表和元数据。
  2. information_schema:标准 SQL 定义的元数据查询接口。
  3. pg_toast:用于存储大对象数据。
  4. pg_temp:用于存储会话中的临时对象。
  5. pg_toast_temp:用于存储临时大对象数据。

http://www.kler.cn/news/319232.html

相关文章:

  • git add成功后忘记commit的文件丢了?
  • Linux、Windows、Android下查看可执行文件、动态库和静态库信息的命令
  • 数据结构|二叉搜索树
  • ProgrammerAI—AI辅助编程学习指南
  • 前端实现将二进制文件流,并下载为excel文件
  • HarmonyOS鸿蒙开发实战(5.0)自定义全局弹窗实践
  • 缓存技术的核心价值与应用
  • android studio 批量修改包名 app package name
  • 技术周总结 09.16~09.22 周日(架构 C# 数据库)
  • 基于Java,SpringBoot和Vue的仓库管理商品管理电商后台管理系统
  • 交换机和路由器的区别
  • HTML-DOM模型
  • 《深度学习》—— 神经网络中的调整学习率
  • React组件如何暴露自身的方法
  • 专题·大模型安全 | 生成式人工智能的内容安全风险与应对策略
  • 由一个 SwiftData “诡异”运行时崩溃而引发的钩深索隐(六)
  • NLP(二)-文本表示
  • JavaScript 构造函数、原型和原型链
  • 芝士派(百宝箱):阿里系智能体平台降临啦
  • python编程开发“人机猜拳”游戏
  • 财务报表中科目的指标值范围
  • web学习——day1
  • Python精选200Tips:166-170
  • Redis中String命令的基础操作
  • 简单工厂模式
  • SQL常用语法详解
  • SelMatch:最新数据集蒸馏,仅用5%训练数据也是可以的 | ICML‘24
  • 【深度学习】聊一聊正则化
  • C++之 string(中)
  • 1.1 elasticsearch分布式集群基本搭建(centos7.x + elaticsearch7.11.1)