更新时间:2024-10-10 GMT+08:00

系统表和系统视图概述

系统表是GaussDB(DWS)存放结构元数据,是GaussDB(DWS)数据库系统运行控制信息的来源,也是数据库系统的核心组成部分。系统表包含集群安装信息以及GaussDB(DWS)上运行的各种查询和进程的信息。可以通过查询系统表来收集有关数据库的信息。

系统视图提供了查询系统表和访问数据库内部状态的方法。当用户对数据库中的一张或者多张表的某些字段的组合感兴趣,而又不想每次键入这些查询时,用户就可以定义一个视图来解决这个问题。视图与基本表不同,不是物理上实际存在的,是一个虚表。数据库中仅存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。若基本表中的数据发生变化,从视图中查询出的数据也随之改变。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中用户感兴趣的数据及变化。视图每次被引用的时候都会运行一次。

三权分立下,非管理员无权查看系统表和视图。非三权分立下,系统表和系统视图要么只对管理员可见,要么对所有用户可见。若标识了需要系统管理员权限的系统表和视图,只有系统管理员可以查询。

  • 禁止对系统表或系统视图进行增删改等操作,手动对系统表或系统视图的修改或破坏可能会导致系统信息不一致,造成系统控制异常甚至出现集群不可用。
  • 系统表不支持toast,无法跨页存储,一个页面大小为8K,系统表各个字段长度需小于8K。
表1 常见系统表举例

系统表名

描述

PG_AM

存储有关索引访问方法的信息。系统支持的每种索引访问方法都有一行。

PG_ATTRIBUTE

存储关于表字段的信息。

PG_AUTHID

存储有关数据库认证标识符(角色)的信息。角色把“用户”的概念包含在内。一个用户实际上就是一个rolcanlogin标志被设置的角色。任何角色(不管rolcanlogin设置与否)都能够把其他角色作为成员。

在一个集群中只有一份pg_authid,不是每个数据库有一份。需要有系统管理员权限才可以访问此系统表。

PG_CONSTRAINT

存储表上的检查约束、主键、唯一约束和外键约束。

PG_CLASS

存储数据库对象信息及其之间的关系。

PG_DATABASE

存储关于可用数据库的信息。

PG_DEPEND

记录数据库对象之间的依赖关系。这些信息允许DROP命令找出哪些其它对象必须由DROP CASCADE删除,或者是在DROP RESTRICT的情况下避免删除。

PG_PARTITION

存储数据库内所有分区表(partitioned table)、分区(table partition)、分区上toast表和分区索引(index partition)四类对象的信息。分区表索引(partitioned index)的信息不在PG_PARTITION系统表中保存。

PG_FOREIGN_TABLE

存储外部表的辅助信息。

PG_INDEX

存储索引的一部分信息,其他的信息大多数在PG_CLASS中。

PG_JOBS

存储用户创建的定时任务的任务详细信息,定时任务线程定时轮询pg_jobs系统表中的时间,当任务到期会触发任务的执行。该系统表属于Shared Relation,所有创建的job记录对所有数据库可见。

PG_LARGEOBJECT

保存那些标记着“大对象”的数据。一个大对象是使用其创建时分配的OID标识的。每个大对象都分解成足够小的小段或者“页面”以便以行的形式存储在PG_LARGEOBJECT里。每页的数据定义为LOBLKSIZE。需要有系统管理员权限才可以访问此系统表。

PG_NAMESPACE

存储命名空间,即存储schema相关的信息。

PG_PROC

存储函数或过程的信息。

表2 常见系统视图举例

系统视图名

描述

GS_CLUSTER_RESOURCE_INFO

显示所有DN资源的汇总信息。

GS_SQL_COUNT

显示数据库当前节点当前时刻执行的五类语句(SELECT、INSERT、UPDATE、DELETE、MERGE INTO)统计信息,包括执行次数和响应时间(除MERGE INTO语句外,统计其他四类语句的最大、最小、平均和总响应时间,单位为微秒),以及DDL、DML、DCL类型语句的执行次数。

PG_LOCKS

存储各打开事务所持有的锁信息。

PG_ROLES

提供访问数据库角色的相关信息。

PG_RULES

提供对查询重写规则的有用信息访问的接口。

PG_TOTAL_USER_RESOURCE_INFO

显示所有用户资源使用情况,需要使用管理员用户进行查询。此视图在参数se_workload_manager为on时才有效。

PG_USER

提供了访问数据库用户的信息。

PG_VIEWS

提供访问数据库中每个视图的有用信息。

PG_STAT_ACTIVITY

显示和当前用户查询相关的信息。若有管理员权限或预置角色权限可以显示和所有用户查询相关的信息。

PG_TABLES

提供了对数据库中每个表访问的有用信息。

PLAN_TABLE

显示用户通过执行EXPLAIN PLAN收集到的计划信息。计划信息的生命周期是session级别,session退出后相应的数据将被清除。同时不同session和不同user间的数据是相互隔离的。