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

server/2024/9/25 10:54:50/

在 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/server/121788.html

相关文章

微服务架构---Ribbon\Feign

Ribbon(负载均衡) Ribbon概述 在 SpringCloud 中&#xff0c; Nacos⼀般配合Ribbon进行使用&#xff0c;Ribbon提供了客户端负载均衡的功能&#xff0c;Ribbon利用从Nacos中读取到的服务信息&#xff0c;在调用服务节点提供的服务时&#xff0c;会合理的进行负载。 Ribbon作…

C语言练习:通讯录

简单版代码讲解&#xff1a; 这个版本不涉及文件操作以及动态内存分配&#xff0c;有助于理解代码。 文件管理 这里我们分了三个文件&#xff0c;.h 文件里给出类型声明和函数声明&#xff0c;contact.c 文件是具体的实现&#xff0c;test.c文件里是游戏的实现逻辑。 test.c…

Pinia从安装到使用

什么是Pinia 添加Pinia到vue项目 使用Pinia实现计数器案例 counter.js import {defineStore} from "pinia"; import {ref} from "vue";export const useCounterStore defineStore(coutner,()>{//定义数据&#xff08;state&#xff09;const count r…

Hadoop的安装

文章目录 一. 到Hadoop官网下载安装文件hadoop-3.4.0.tar.gz。二. 环境变量三. 配置 一. 到Hadoop官网下载安装文件hadoop-3.4.0.tar.gz。 随后点击下载即可 由于Hadoop不直接支持Windows系统&#xff0c;因此&#xff0c;需要修改一些配置才能运行 二. 环境变量 三. 配置 进…

android13 系统默认设置静态IP

android11系统的时候&#xff0c;默认静态IP设置很简单&#xff0c;修改frameworks\base\core\res\res\values\config.xml中的config_ethernet_interfaces字符数组&#xff0c;在里面添加静态IP的参数就可以了。 <string-array translatable"false" name"c…

IDEA类和方法注释模板设置

一、概述 IDEA自带的注释模板不是太好用&#xff0c;我本人到网上搜集了很多资料系统的整理了一下制作了一份比较完整的模板来分享给大家&#xff0c;写这篇文章只是为了让大家省事。 适用于通过在项目工具窗口中调用新建 | Java 类 | 类创建的新 Java 类。 此内置模板…

C 字符串操作

strcpy char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest。 #include <stdio.h> #include <stdlib.h> #include <string.h>char* my_strcpy(char *dst, char *src) {if(dst NULL || src NULL){return NULL;}char *ret dst…

2024最新Linux发行版,Kali Linux迎来劲敌,零基础入门到精通,收藏这一篇就够了

概念简介 Parrot OS 是一款基于 Debian 的 Linux 发行版&#xff0c;专门为安全研究、渗透测试、开发以及隐私保护而设计。由 Frozenbox 团队开发的 Parrot OS&#xff0c;结合了现代安全工具、用户友好的环境以及出色的隐私保护特性&#xff0c;成为网络安全从业者、开发人员…