PG中的系统视图
pg提供了一系列内置的视图,系统视图提供了查询系统表的一些便利的访问方法。其他一些视图提供了访问内部服务器状态的方法。
除了特别注明的,所有这里描述的视图都是只读的。
postgres=
1、系统视图
| 视图名称 | 用途 |
| pg_available_extensions |
可用的扩展 |
| pg_available_extension_versions |
所有版本的扩展 |
| pg_config |
编译时配置参数 |
| pg_cursors |
打开的游标 |
| pg_file_settings |
配置文件内容摘要 |
| pg_group |
数据库用户组 |
| pg_hba_file_rules |
客户端认证配置文件内容的摘要 |
| pg_indexes |
索引 |
| pg_locks |
当前保持或等待的锁 |
| pg_matviesw |
物化视图 |
| pg_policies |
策略 |
| pg_prepared_statements |
预备好的语句 |
| pg_prepared_xacts |
预备好的事务 |
| pg_publication_tables |
publication和它们相关的表 |
| pg_replication_origin_status |
有关复制源的信息,包括复制进度 |
| pg_replication_slots |
复制槽信息 |
| pg_roles |
数据库角色 |
| pg_rules |
规则 |
| pg_seclabels |
安全标签 |
| pg_sequences |
序列 |
| pg_settings |
参数设置 |
| pg_shadow |
数据库用户 |
| pg_status |
规划器统计信息 |
| pg_status_ext |
扩展的计划器统计信息 |
| pg_tables |
表 |
| pg_timezone_abbrevs |
时区简写 |
| pg_timezone_names |
时区名字 |
| pg_user |
数据库用户 |
| pg_user_mappings |
用户映射 |
| pg_views |
视图 |
2、动态统计视图
| 视图名称 | 描述 |
| pg_stat_activity |
每个服务器进程一行,显示与那个进程的当前活动相关的信息,例如状态和当前查询 |
| pg_stat_replication |
每一个WAL发送进程一行,显示有关到该发送进程,连接的后备服务器的复制的统计信息。 |
| pg_stat_wal_receiver |
只有一行,显示来自wal接收器所连接服务器的有关该接收器的统计信息 |
| pg_stat_subscription |
每个订阅至少一行,显示订阅工作者的相关信息,详细信息 |
| pg_stat_ssl |
每个连接(常规连接和复制连接)一行,显示有关在此连接上使用的SSL的信息。 |
| pg_stat_progress_vacuum |
每个vacuum的后端一行,显示当前的进度。 |
3、已收集统计信息的视图
| 视图名称 | 描述 |
| pg_stat_archiver |
只有一行,显示有关wal归档进程活动的统计信息。 |
| pg_stat_bgwriter |
只有一行,显示有关后台写进程的活动的统计信息。 |
| pg_stat_database |
每个数据库一行,显示数据库范围的统计信息。 |
| pg_stat_database_conflicts |
每个数据库一行,显示数据库范围的统计信息,这些信息的内容是关于由于与后备服务器的恢复过程发生冲突而被取消的查询。 |
| pg_stat_all_tables |
当前数据库中每个表一行,显示有关访问指定表的统计信息。 |
| pg_stat_sys_tables |
和pg_stat_all_tables一样,但是只显示系统表。 |
| pg_stat_user_tables |
和pg_stat_all_tables一样,但是只显示用户表。 |
| pg_stat_xact_all_tables |
和pg_stat_all_tables类似,但计数动作只在当前事务内发生,用于生成和死亡行数量的列以及清理和分析动作在视图不出现。 |
| pg_stat_xact_sys_tables |
和pg_stat_xact_all_tables一样,但是只显示系统表 |
| pg_stat_xact_user_tables |
和pg_stat_xact_all_tables一样,但是只显示用户表 |
| pg_stat_all_indexes |
当前数据库中的每个索引一行,显示:表OID、索引OID、模式、表名、索引名、使用了该所有的索引扫描总数、索引扫描返回的索引记录数、使用该索引的简单索引抓取的活表中数据行数。当前数据库中每个索引一行,显示与访问指定索引有关的统计信息 |
| pg_stat_sys_indexes |
和pg_stat_all_indexes一样,但是只显示系统表上的索引。 |
| pg_stat_user_indexes |
和pg_stat_all_indexes一样,但是只显示用户表上的索引。 |
| pg_statio_all_tables |
当前数据库中每个表一行(包括TOAST表),显示:表OID、模式名、表名、从该表中读取的磁盘块总数、缓冲区命中次数、该表上所有索引的磁盘块读取总数、该表上所有索引的缓冲区命中总数、在该表的服务TOAST表上的磁盘块读取总数、在该表的辅助TOAST表上的缓冲区命中总数、TOAST表的索引的磁盘块读取总数、TOAST表的索引的缓冲区命中总数。当前数据库中的每个表一行,显示有关在指定表上I/O的统计信息 |
| pg_statio_sys_tables |
和pg_statio_all_tables一样,但是只显示系统表。 |
| pg_statio_user_tables |
和pg_statio_all_tables一样,但是只显示用户表。 |
| pg_statio_all_indexes |
当前数据库中每个索引一行,显示:表OID、索引OID、模式名、表名、索引名、该索引的磁盘块读取总数、该索引的缓冲区命中总数,当前数据库中的每个索引一行,显示与指定索引上的I/O有关的统计信息。 |
| pg_statio_sys_indexes |
和pg_statio_all_indexes一样,但是只显示系统表上的索引。 |
| pg_statio_user_indexes |
和pg_statio_all_indexes一样,但是只显示用户表上的索引。 |
| pg_statio_all_sequences |
当前数据库中每个序列对象一行,显示:序列OID、模式名、序列名、序列的磁盘读取总数、序列的缓冲区命中总数。当前数据库中的每个序列一行,显示与指定序列上的I/O有关的统计信息。 |
| pg_statio_sys_sequences |
和pg_statio_all_sequences一样,但是只显示系统序列(目前没有定义系统序列,因此这个视图总是空的)。 |
| pg_statio_user_sequences |
和pg_statio_all_sequences一样,但是只显示用户序列。 |
| pg_stat_user_functions |
对于所有跟踪功能,显示:函数的OID、模式、名称、数量、通话总时间、自我的时间。时间值以毫秒为单位。每一个被跟踪的函数一行,显示与执行该函数有关的统计信息。 |
| pg_stat_xact_user_functions |
和pg_stat_user_functions类似,但是只统计在当前事务期间的调用 |
4、PG中常用的系统视图
1)pg_tables
| 名称 | 类型 | 引用 | 描述 |
| schemaname |
name |
pg_namespace.nspname |
包含表的模式名 |
| tablename |
name |
pg_class.relname |
表名 |
| tableowner |
name |
pg_authid.rolname |
表拥有者的名字 |
| tablespace |
name |
pg_tablespace.spcname |
包含表空间的名字 |
| hasindexes |
boolean |
pg_class.relhasindex |
如果表有(或最近有过)索引,此列为真 |
| hasrules |
boolean |
pg_class.relhasrules |
如果表有(或曾经有过)规则,此列为真 |
| hastriggers |
boolean |
pg_class.relhastriggers |
如果表有(或曾经有过)触发器,此列为真 |
| rowsecurity |
boolean |
pg_class.relrowsecurity |
如果表上启用了行安全性,此列为真 |
2)pg_indexes
| 名称 | 类型 | 引用 | 描述 |
| schemaname |
name |
pg_namespace.nspname |
包含表和索引的模式名 |
| tablename |
name |
pg_class.relname |
此索引的基表的名字 |
| indexname |
name |
pg_class.relname |
索引名 |
| tablespace |
name |
pg_tablespace.spcname |
包含索引的表空间名(如何是数据库的默认值则为空) |
| indexdef |
text |
|
索引定义(CREATE INDEX命令的重构) |
3)pg_views
| 名称 | 类型 | 引用 | 描述 |
| schemaname |
name |
pg_namespace.nspname |
包含视图的模式名 |
| viewname |
name |
pg_class,relname |
视图名称 |
| viewowner |
name |
pg_authid.rolname |
视图拥有者的名字 |
| definition |
text |
|
视图定义(一个重构的SELECT查询) |
4)pg_user
| 名字 | 类型 | 描述 |
| usename |
name |
用户名 |
| usesysid |
oid |
用户的ID |
| usecreatedb |
bool |
用户是否能创建数据库 |
| usesuper |
bool |
用户是否为超级用户 |
| userepl |
bool |
用户能否开启流复制以及将系统转入/转出备份模式。 |
| usebypassrls |
bool |
用户能否绕过所有的行级安全性策略, |
| passwd |
text |
不是口令(总是显示为********) |
| valuntil |
timestamptz |
口令过期时间(只用于口令认证) |
| useconfig |
text[] |
运行时配置变量的会话默认值 |
5)pg_roles
| 名称 | 类型 | 引用 | 描述 |
| rolname |
name |
|
角色名 |
| rolsuper |
bool |
|
角色是否具有超级用户权限? |
| rolinherit |
bool |
|
如果此角色是另一个角色的成员,角色是否能自动继承另一个角色的权限? |
| rolcreaterole |
bool |
|
角色是否创建更多角色? |
| rolcreatedb |
bool |
|
角色是否创建数据库? |
| rolcanlogin |
bool |
|
角色是否能登录? |
| rolreplication |
bool |
|
角色是一个复制角色,复制角色可以开启复制连接并且创建和删除复制槽。 |
| rolconlimit |
int4 |
|
对于一个可登录的角色,这个设置角色可以发起的最大并发连接数,-1表示无限制 |
| rolpassword |
text |
|
不是口令(看起来是********) |
| rolvaliduntil |
timestamptz |
|
口令失效时间(只用于口令认证),如果永不失效则为空 |
| rolbypassrls |
bool |
|
绕过每一条行级安全性策略的角色 |
| rolconfig |
text[] |
|
运行时配置变量的角色特定默认值 |
| oid |
oid |
pg_authid.oid |
角色的ID |
6)pg_rules
| 名称 | 类型 | 引用 | 描述 |
| schemaname |
name |
pg_namespace.nspname |
包含表的模式名 |
| tablename |
name |
pg_class.relname |
规则适用的表名 |
| rulename |
name |
pg_rewrite.rulename |
规则名 |
| definition |
text |
|
规则定义 |
7)pg_settings
| 名字 | 类型 | 描述 |
| name |
text |
运行时配置参数名 |
| setting |
text |
参数的当前值 |
| unit |
text |
参数的隐式单元 |
| category |
text |
参数的逻辑组 |
| short_desc |
text |
参数的简短描述 |
| extra_desc |
text |
附加的参数的详细描述 |
| context |
text |
要求设置此参数值的上下文 |
| vartype |
text |
参数类型( bool 、 enum 、 integer 、 real 或 string ) |
| source |
text |
当前参数值的来源 |
| min_val |
text |
参数的最小允许值(对非数字值为空) |
| max_val |
text |
参数的最大允许值(对非数字值为空) |
| enumvals |
text[] |
一个枚举参数的允许值(对非数字值为空) |
| boot_val |
text |
如果参数没有被别的其他设置,此列为在服务器启动时设定的参数值 |
| reset_val |
text |
在当前会话中, RESET 将会设置的参数值 |
| sourcefile |
text |
当前值被设置的配置文件(空值表示从非配置文件的其他来源设置,由不是超级用户也不是 pg_read_all_settings 成员的用户检查时也为空值),在配置文件中使用 include 指令时有用 |
| sourceline |
integer |
当前值被设置的配置文件中的行号(空值表示从非配置文件的其他来源设置,由不是超级用户也不是 pg_read_all_settings 成员的用户检查时也为空值)。 |
| pending_restart |
boolean |
如果配置文件中修改了该值但需要重启,则为 true , 否则为 false 。 |
8)pg_class
| 名称 | 类型 | 引用 | 描述 |
| oid |
oid |
|
行标识符 |
| relname |
name |
|
表、索引、视图等的名字 |
| relnamespace |
oid |
pg_namespace.oid |
包含该关系的名字空间的OID |
| reltype |
oid |
pg_type.oid |
可能存在的表行类型所对应数据类型的OID(对索引为0,索引没有pg_type项) |
| reloftype |
oid |
pg_type.oid |
对于有类型的表,为底层组合类型的OID,对于其他所有关系为0 |
| relowner |
oid |
pg_authid.oid |
关系的拥有者 |
| relam |
oid |
pg_am.oid |
如果这是一个表或者索引,表示索引使用的访问方法(堆、B树、哈希等) |
| relfilenode |
oid |
|
该关系的磁盘文件的名字,0表示这是一个“映射”关系,其磁盘文件名取决于低层状态 |
| reltablespace |
oid |
pg_tablespace.oid |
该关系所存储的表空间。如果为0,使用数据库的默认表空间。(如果关系无磁盘文件时无意义) |
| relpages |
int4 |
|
该表磁盘表示的尺寸,以页面计(页面尺寸为BLCKSZ)。这只是一个由规划器使用的估计值。它被VACUUM、ANALYZE以及一些DDL命令(如CREATE INDEX)所更新。 |
| reltuples |
float4 |
|
表中的存活行数。这只是一个由规划器使用的估计值。它被VACUUM、ANALYZE以及一些DDL命令(如CREATE INDEX)所更新。 |
| relallvisible |
int4 |
|
在表的可见性映射表中被标记为全可见的页数。这只是一个由规划器使用的估计值。它被VACUUM、ANALYZE以及一些DDL命令(如CREATE INDEX)所更新。 |
| reltoastrelid |
oid |
pg_class.oid |
与该表相关联的TOAST表的OID,如果没有则为0。TOAST表将大属性“线外”存储在一个二级表中。 |
| relhasindex |
bool |
|
如果这是一个表并且其上建有(或最近建有)索引则为真 |
| relisshared |
bool |
|
如果该表在集簇中的所有数据库间共享则为真。只有某些系统目录(如pg_database)是共享的。 |
| relpersistence |
char |
|
p = 永久表,u = 无日志表, t = 临时表 |
| relkind |
char |
|
r = 普通表, i = 索引, S = 序列, t = TOAST表, v = 视图, m = 物化视图, c = 组合类型, f = 外部表, p = 分区表, I = 分区索引 |
| relnatts |
int2 |
|
关系中用户列的数目(系统列不计算在内)。在pg_attribute中必须有这么多对应的项。另请参阅pg_attribute.attnum。 |
| relchecks |
int2 |
|
表上CHECK约束的数目,参见pg_constraint目录 |
| relhasrules |
bool |
|
如果表有(或曾有)规则则为真,参见 pg_rewrite目录 |
| relhastriggers |
bool |
|
如果表有(或曾有)触发器则为真,参见 pg_trigger目录 |
| relhassubclass |
bool |
|
如果表或者索引有(或曾有)任何继承子女则为真 |
| relrowsecurity |
bool |
|
如果表上启用了行级安全性则为真,参见 pg_policy目录 |
| relforcerowsecurity |
bool |
|
如果行级安全性(启用时)也适用于表拥有者则为真,参见 pg_policy目录 |
| relispopulated |
bool |
|
如果表已被填充则为真(对于所有关系该列都为真,但对于某些物化视图却不是) |
| relreplident |
char |
|
用来为行形成“replica identity”的列: d = 默认 (主键,如果存在), n = 无, f = 所有列 i = 索引的indisreplident被设置或者为默认 |
| relispartition |
bool |
|
如果表或索引是一个分区,则为真 |
| relrewrite |
oid |
pg_class.oid |
对于在要求表重写的DDL操作期间被写入的新关系,这个域包含原始关系的OID,否则为0。那种状态仅在内部可见,对于一个用户可见的关系这个域应该从不包含不是0的值。 |
| relfrozenxid |
xid |
|
在此之前的所有事务ID在表中已经被替换为一个永久的(“冻结的”) 事务ID。这用于跟踪表是否需要被清理,以便阻止事务ID回卷或者允许pg_xact被收缩。如果该关系不是一个表则为0(InvalidTransactionId)。 |
| relminmxid |
xid |
|
在此之前的多事务ID在表中已经被替换为一个事务ID。这被用于跟踪表是否需要被清理,以阻止 多事务ID回卷或者允许pg_multixact被收缩。如果关系不是一个表则 为0(InvalidMultiXactId)。 |
| relacl |
aclitem[] |
|
访问权限,更多信息参见第5.7节 |
| reloptions |
text[] |
|
访问方法相关的选项,以“keyword=value”字符串形式 |
| relpartbound |
pg_node_tree |
|
如果表示一个分区(见relispartition),分区边界的内部表达 |
(53条消息) 视图pg库 - CSDN