PG中的系统视图
pg提供了一系列内置的视图,系统视图提供了查询系统表的一些便利的访问方法。其他一些视图提供了访问内部服务器状态的方法。
除了特别注明的,所有这里描述的视图都是只读的。
postgres =
List of relations
Schema | Name | Type | Owner
------------+---------------------------------+------+----------
pg_catalog | pg_available_extension_versions | view | postgres
pg_catalog | pg_available_extensions | view | postgres
pg_catalog | pg_config | view | postgres
pg_catalog | pg_cursors | view | postgres
pg_catalog | pg_file_settings | view | postgres
pg_catalog | pg_group | view | postgres
pg_catalog | pg_hba_file_rules | view | postgres
pg_catalog | pg_indexes | view | postgres
pg_catalog | pg_locks | view | postgres
pg_catalog | pg_matviews | view | postgres
pg_catalog | pg_policies | view | postgres
pg_catalog | pg_prepared_statements | view | postgres
pg_catalog | pg_prepared_xacts | view | postgres
pg_catalog | pg_publication_tables | view | postgres
pg_catalog | pg_replication_origin_status | view | postgres
pg_catalog | pg_replication_slots | view | postgres
pg_catalog | pg_roles | view | postgres
pg_catalog | pg_rules | view | postgres
pg_catalog | pg_seclabels | view | postgres
pg_catalog | pg_sequences | view | postgres
pg_catalog | pg_settings | view | postgres
pg_catalog | pg_shadow | view | postgres
pg_catalog | pg_shmem_allocations | view | postgres
pg_catalog | pg_stat_activity | view | postgres
pg_catalog | pg_stat_all_indexes | view | postgres
pg_catalog | pg_stat_all_tables | view | postgres
pg_catalog | pg_stat_archiver | view | postgres
pg_catalog | pg_stat_bgwriter | view | postgres
pg_catalog | pg_stat_database | view | postgres
pg_catalog | pg_stat_database_conflicts | view | postgres
pg_catalog | pg_stat_gssapi | view | postgres
pg_catalog | pg_stat_progress_analyze | view | postgres
pg_catalog | pg_stat_progress_basebackup | view | postgres
pg_catalog | pg_stat_progress_cluster | view | postgres
pg_catalog | pg_stat_progress_create_index | view | postgres
pg_catalog | pg_stat_progress_vacuum | view | postgres
pg_catalog | pg_stat_replication | view | postgres
pg_catalog | pg_stat_slru | view | postgres
pg_catalog | pg_stat_ssl | view | postgres
pg_catalog | pg_stat_subscription | view | postgres
pg_catalog | pg_stat_sys_indexes | view | postgres
pg_catalog | pg_stat_sys_tables | view | postgres
pg_catalog | pg_stat_user_functions | view | postgres
pg_catalog | pg_stat_user_indexes | view | postgres
pg_catalog | pg_stat_user_tables | view | postgres
pg_catalog | pg_stat_wal_receiver | view | postgres
pg_catalog | pg_stat_xact_all_tables | view | postgres
pg_catalog | pg_stat_xact_sys_tables | view | postgres
pg_catalog | pg_stat_xact_user_functions | view | postgres
pg_catalog | pg_stat_xact_user_tables | view | postgres
pg_catalog | pg_statio_all_indexes | view | postgres
pg_catalog | pg_statio_all_sequences | view | postgres
pg_catalog | pg_statio_all_tables | view | postgres
pg_catalog | pg_statio_sys_indexes | view | postgres
pg_catalog | pg_statio_sys_sequences | view | postgres
pg_catalog | pg_statio_sys_tables | view | postgres
pg_catalog | pg_statio_user_indexes | view | postgres
pg_catalog | pg_statio_user_sequences | view | postgres
pg_catalog | pg_statio_user_tables | view | postgres
pg_catalog | pg_stats | view | postgres
pg_catalog | pg_stats_ext | view | postgres
pg_catalog | pg_tables | view | postgres
pg_catalog | pg_timezone_abbrevs | view | postgres
pg_catalog | pg_timezone_names | view | postgres
pg_catalog | pg_user | view | postgres
pg_catalog | pg_user_mappings | view | postgres
pg_catalog | pg_views | view | postgres
( 67 rows)
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),分区边界的内部表达