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

news/2024/9/25 20:39:01/

在 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.ppmy.cn/news/1530440.html

相关文章

「JavaScript深入」一文说明白JS的执行上下文与作用域

JavaScript深入 — 执行上下文与作用域 上下文执行上下文生命周期创建阶段执行阶段回收阶段 执行栈作用域链作用域词法作用域&#xff08;静态作用域&#xff09; 上下文 变量或函数的上下文决定了它们可以访问哪些数据&#xff0c;以及它们的行为。 每个上下文都有一个关联的…

vuex和redux的区别

Vuex和Redux是两个流行的JavaScript状态管理库&#xff0c;它们各自有着独特的特点和适用场景。以下是它们之间的一些主要区别&#xff1a; 1. 设计初衷与生态系统 Vuex&#xff1a;专为Vue.js框架设计&#xff0c;与Vue.js的概念和语法紧密集成。因此&#xff0c;在Vue社区中…

macOS平台编译libidn2库给iOS及macOS用

1.克隆源码: git clone https://gitlab.com/libidn/libidn2.git --recursive 2.安装依赖库: pkg-config也要安装 3.启动bootstrap生成configure 配置成功 configure生成成功

linux 基础(一)mkdir、ls、vi、ifconfig

1、linux简介 linux是一个操作系统&#xff08;os: operating system&#xff09; 中国有没有自己的操作系统&#xff08;华为鸿蒙HarmonyOS&#xff0c;阿里龙蜥(Anolis) OS 8、百度DuerOS都有&#xff09; 计算机组的组成&#xff1a;硬件软件 硬件&#xff1a;运算器&am…

操作系统 | 学习笔记 | | 王道 | 5.3 磁盘和固态硬盘

5.3 磁盘和固态硬盘 5.3.1 磁盘 磁盘结构 磁盘&#xff1a;磁盘的表面由一些磁性物质组成&#xff0c;可以用这些磁性物质来记录二进制数据 磁道&#xff1a;磁盘的盘面被划分成一个个磁道。这样的一个“圈”就是一个磁道 扇区&#xff1a;一个磁道又被划分成一个个扇区&am…

828华为云征文|云服务器Flexus X实例|Ubunt部署Vue项目

概要 本章将深入阐述Vue项目在Ubuntu环境下&#xff0c;实现在华为云Flexus X云服务器上的部署过程&#xff0c;此次演示以Vue.js项目为核心华为云在已经到来的828 B2B企业节上&#xff0c;为Vue等前端项目的部署与运维提供强有力的支持。 Ubuntu部署Vue项目的影响&#xff1…

【C++】C++入门概念(一)

C关键字 C总计63个关键字&#xff0c;C语言32个关键字 ps&#xff1a;下面我们只是看一下C有多少关键字&#xff0c;不对关键字进行具体的讲解。后面我们学到以后再详细讨论。 命名空间 在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、…

USB Micro-A、Micro-B 插头与 Micro-AB、Micro-B 插座,及其引脚定义

微型连接器配对 下表总结了每个插座所接受的插头&#xff1a; 从上表可知&#xff0c;Micro-B 插座只能配对 Micro-B 插头&#xff1b;而 Micro-AB 插座则可以配对 Micro-A 插头或 Micro-B 插头。 Micro-A 插头中的五个引脚的用法和接线分配在下表中进行了定义&#xff1a; C…