[小记]postgresql的系统表
系统表
系统表是关系型数据库存放结构元数据的地方,比如表和字段以及内部登记信息等。PostgreSQL 的系统表就是普通表。你可以删除然后重建这些表、增加列、插入和更新数值,然后彻底把系统搞垮。不应该手工修改系统表,通常总有 SQL 命令可以做这些事情。比如,CREATE DATABASE 向 pg_database 表插入一行,并且实际上在磁盘上创建该数据库。有几种特别深奥的操作例外,比如增加索引访问方法。
1. 系统表部分:
大多数系统表都是在数据库创建的过程中从模版数据库中拷贝过来的,因此都是数据库相关的。少数表是在整个安装中物理上所有数据库共享的;这些表在独立的表的描述中用指明了。
表名字 | 用途 |
---|---|
pg_aggregate | 聚集函数 |
pg_am | 索引访问方法 |
pg_amop | 访问方法操作符 |
pg_amproc | 访问方法支持过程 |
pg_attrdef | 字段缺省值 |
pg_attribute | 表的列(也称为"属性"或"字段") |
pg_authid | 认证标识符(角色) |
pg_auth_members | 认证标识符成员关系 |
pg_autovacuum | 每个关系一个的自动清理配置参数 |
pg_cast | 转换(数据类型转换) |
pg_class | 表、索引、序列、视图("关系") |
pg_constraint | 检查约束、唯一约束、主键约束、外键约束 |
pg_conversion | 编码转换信息 |
pg_database | 本集群内的数据库 |
pg_depend | 数据库对象之间的依赖性 |
pg_description | 数据库对象的描述或注释 |
pg_index | 附加的索引信息 |
pg_inherits | 表继承层次 |
pg_language | 用于写函数的语言 |
pg_largeobject | 大对象 |
pg_listener | 异步通知 |
pg_namespace | 模式 |
pg_opclass | 索引访问方法操作符类 |
pg_operator | 操作符 |
pg_pltemplate | 过程语言使用的模板数据 |
pg_proc | 函数和过程 |
pg_rewrite | 查询重写规则 |
pg_shdepend | 在共享对象上的依赖性 |
pg_shdescription | 共享对象上的注释 |
pg_statistic | 优化器统计 |
pg_tablespace | 这个数据库集群里面的表空间 |
pg_trigger | 触发器 |
pg_type | 数据类型 |
2、系统视图部分:
除了系统表之外,PostgreSQL 还提供了一系列内置的视图。系统视图提供了查询系统表的一些便利的访问方法。其它一些视图提供了访问内部服务器状态的方法。
信息模式提供了另外一套视图,它的功能覆盖了系统视图的功能。因为信息模式是 SQL 标准,而这里描述的视图是 PostgreSQL 特有的,所以最好用信息模式来获取自己需要的所有信息。
下面列出了这里描述的所有系统视图。下面是每个视图更详细的信息。有些视图提供了对统计收集器的结果的访问;
除了特别声明的,这里描述的所有视图都是只读的。
视图名 | 用途 |
---|---|
pg_cursors | 打开的游标 |
pg_group | 数据库用户的组 |
pg_indexes | 索引 |
pg_locks | 当前持有的锁 |
pg_prepared_statements | 预备语句 |
pg_prepared_xacts | 预备事务 |
pg_roles | 数据库角色 |
pg_rules | 规则 |
pg_settings | 参数设置 |
pg_shadow | 数据库用户 |
pg_stats | 规划器统计 |
pg_tables | 表 |
pg_timezone_abbrevs | 时区缩写 |
pg_timezone_names | 时区名 |
pg_user | 数据库用户 |
pg_views | 视图 |