postgresql 数据库 系统表

postgresql 数据库 系统表


版本11.5
系统表是关系型数据库存放模式元数据的地方,比如表和列的信息,以及内部统计信息等。PostgreSQL的系统表就是普通表。你可以删除并重建这些表、增加列、插入和更新数值, 然后彻底把你的系统搞垮。 通常情况下,我们不应该手工修改系统表,通常有 SQL 命令可以做这些事情。(例如, CREATE DATABASE 向 pg_database 表插入一行 — 并且实际上在磁盘上创建该数据库。)。 有几种特别深奥的操作例外,但是随着时间的流逝其中的很多也可以用 SQL 命令来完成,因此对系统表直接修改的需求也越来越小。

一 系统表总览

系统表名用途
pg_aggregate聚集函数
pg_am索引访问方法
pg_amop访问方法操作符
pg_amproc访问方法支持过程
pg_attrdef列默认值
pg_attribute表列 ( “属性” )
pg_authid认证标识符(角色)
pg_auth_members认证标识符成员关系
pg_cast转换(数据类型转换)
pg_class表、索引、序列、视图 (“关系”)
pg_collation排序规则(locale信息)
pg_constraint检查约束、唯一约束、主键约束、外键约束
pg_conversion编码转换信息
pg_database本数据库集簇中的数据库
pg_db_role_setting每角色和每数据库的设置
pg_default_acl对象类型的默认权限
pg_depend数据库对象间的依赖
pg_description数据库对象上的描述或注释
pg_enum枚举标签和值定义
pg_event_trigger事件触发器
pg_extension已安装扩展
pg_foreign_data_wrapper外部数据包装器定义
pg_foreign_server外部服务器定义
pg_foreign_table外部表信息
pg_index索引信息
pg_inherits表继承层次
pg_init_privs对象初始特权
pg_language编写函数的语言
pg_largeobject大对象的数据页
pg_largeobject_metadata大对象的元数据
pg_namespace模式
pg_opclass访问方法操作符类
pg_operator操作符
pg_opfamily访问方法操作符族
pg_partitioned_table有关表的分区键的信息
pg_pltemplate过程语言的模板数据
pg_policy行安全策略
pg_proc函数和过程
pg_publication逻辑复制的发布
pg_publication_rel与发布映射的关系
pg_range范围类型的信息
pg_replication_origin已注册的复制源
pg_rewrite查询重写规则
pg_seclabel数据库对象上的安全标签
pg_sequence有关序列的信息
pg_shdepend共享对象上的依赖
pg_shdescription共享对象上的注释
pg_shseclabel共享数据库对象上的安全标签
pg_statistic规划器统计
pg_statistic_ext扩展的规划器统计
pg_subscription逻辑复制订阅
pg_subscription_rel订阅的关系状态
pg_tablespace本数据库集簇内的表空间
pg_transform转换(将数据类型转换为过程语言需要的形式)
pg_trigger触发器
pg_ts_config文本搜索配置
pg_ts_config_map文本搜索配置的记号映射
pg_ts_dict文本搜索字典
pg_ts_parser文本搜索分析器
pg_ts_template文本搜索模板
pg_type数据类型
pg_user_mapping将用户映射到外部服务器

二 常用系统表

1.pg_class

pg_class 记录表和几乎所有具有列或者像表的东西。 这包括索引(但还要参见 pg_index )、序列 (pg_sequence )、视图、物化视图、组合类型和 TOAST 表

名称类型引用描述
oidoid行标识符(隐藏属性,必须被显式选择才会显示)
relnamename表、索引、视图等的名字
relnamespaceoidpg_namespace.oid包含该关系的名字空间的 OID
reltypeoidpg_type.oid可能存在的表行类型所对应数据类型的OID(对索引为0,索引没有 pg_type 项)
reloftypeoidpg_type.oid对于有类型的表,为底层组合类型的OID,对于其他所有关系为 0
relowneroidpg_authid.oid关系的拥有者
relamoidpg_am.oid如果这是一个索引,表示索引使用的访问方法(B树、哈希等)
relfilenodeoid该关系的磁盘文件的名字,0表示这是一个“映射”关系,其磁盘文件名取决于低层状态
reltablespaceoidpg_tablespace.oid该关系所存储的表空间。如果为0,使用数据库的默认表空间。(如果关系无磁盘文件时无意义)
relpagesint4该表磁盘表示的尺寸,以页面计(页面尺寸为
reltuplesfloat4表中的行数。这只是一个由规划器使用的估计值。它被VACUUM、ANALYZE以及一些DDL命令(如CREATEINDEX)所更新。
relallvisibleint4在表的可见性映射表中被标记为全可见的页数。这只是一个由规划器使用的估计值。它被VACUUM、aNALYZE以及一些DDL命令(如CREATEINDEX)所更新。
reltoastrelidoidpg_class.oid与该表相关联的TOAST表的OID,如果没有则为0。TOAST表将大属性“线系统表外”存储在一个二级表中。
relhasindexbool如果这是一个表并且其上建有(或最近建有)索引则为真
relissharedbool如果该表在集簇中的所有数据库间共享则为真。只有某些系统表(如
relpersistencecharp=永久表,u=无日志表,t=临时表
relkindcharr=普通表,i=索引,S=序列,t=TOAST表,v=视图,m=物化视图,c=组合类型,f=外部表,p=分区表
relnattsint2关系中用户列的数目(系统列不计算在内)。
relchecksint2表上 CHECK 约束的数目,
relhasoidsbool如果为关系的每一行生成一个OID则为真
relhaspkeybool如果表有(或曾有)一个主键则为真
relhasrulesbool如果表有(或曾有)规则则为真,
relhastriggersbool如果表有(或曾有)触发器则为真,
relhassubclassbool如果表有(或曾有)任何继承子女则为真
relrowsecuritybool如果表上启用了行级安全性则为真,
relforcerowsecuritybool如果行级安全性(启用时)也适用于表拥有者则为真,
relispopulatedbool如果表已被填充则为真(对于所有关系该系统表列都为真,但对于某些物化视图却不是)
relreplidentchar用来为行形成“replicaidentity”的列:d=默认(主键,如果存在),n=无,f=所有列i=索引的indisreplident 被设置或者为默认
relispartitionbool如果表是分区,则为真
relfrozenxidxid在此之前的所有事务ID在表中已经被替换为一个永久的(“冻结的” )事务ID。这用于跟踪表是否需要被清理,以便阻止事务ID回卷或者允许pg_xact被收缩。如果该关系不是一个表则为0(InvalidTransactionId)。
relminmxidxid在此之前的多事务ID在表中已经被替换为一个事务ID。这被用于跟踪表是否需要被清理,以阻止多事务ID回卷或者允许pg_multixact被收缩。如果关系不是一个表则为0(InvalidMultiXactId)。
relaclaclitem[]访问权限
reloptionstext[]访问方法相关的选项,以“keyword=value”字符串形式
relpartboundpg_node_tree如果表是分区,则是分区绑定的内部表示形式

2 pg_attribute

pg_attribute 存储有关表列的信息。数据库中的每一个表的每一个列都恰好在 pg_attribute 中有一行。

名字类型引用描述
attrelidoidpg_class.oid此列所属的表。
attnamename列名。
atttypidoidpg_type.oid列的数据类型。
attstattargetint4attstattarget控制ANALYZE为这个列设置的统计细节的级别。零值表示不收集统计信息,负数表示使用系统缺省的统计对象。正数值的确切信息是和数据类型相关的。
attlenint2该列所属类型的长度。(pg_type.typlen的拷贝)
attnumint2列的编号,普通列是从1开始计数的。系统列,如oid,是任意的负数。
attndimsint4如果该列是数组,该值表示数组的维数,否则是0。
attcacheoffint4在磁盘上总是-1,但是如果装载入内存中的行描述器中, 它可能会被更新为缓冲在行中列的偏移量。
atttypmodint4表示数据表在创建时提供的类型相关的数据(比如,varchar列的最大长度)。其值对那些不需要atttypmod的类型而言通常为-1。
attbyvalboolpg_type.typbyval列值的拷贝。
attstoragecharpg_type.typstorage列值的拷贝。
attaligncharpg_type.typalign列值的拷贝。
attnotnullbool如果该列带有非空约束,则为真,否则为假。
atthasdefbool该列是否存在缺省值,此时它对应pg_attrdef表里实际定义此值的记录。
attisdroppedbool该列是否已经被删除。如果被删除,该列在物理上仍然存在表中,但会被分析器忽略,因此不能再通过SQL访问。
attislocalbool该列是否局部定义在对象中的。
attinhcountint4该列所拥有的直接祖先的个数。如果一个列的祖先个数非零,那么它就不能被删除或重命名。
attcollationoidpg_collation.oid该列被定义的排序规则,如果该列不是一个可排序数据类型则为0。
attaclaclitem[]列级访问权限
attoptionstext[]属性级选项
attfdwoptionstext[]属性级的外部数据包装器选项
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yang_z_1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值