在pg数据库中有很多的系统视图,学习pg需要了解这些视图,pg中大部分视图都是以pg_开头的,查看所有的系统视图的命令如下
postgres=# \dv pg_*
(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_matviews | 物化视图 |
| pg_policies | 策略 |
| pg_prepared_statements | 预备好的语句 |
| pg_prepared_xacts | 预备好的事务 |
| pg_publication_tables | 发布及其相关表格 |
| pg_replication_origin_status | 有关复制源的信息,包括复制进度 |
| pg_replication_slots | 复制槽信息 |
| pg_roles | 数据库角色 |
| pg_rules | 规则 |
| pg_seclabels | 安全标签 |
| pg_sequences | 序列 |
| pg_settings | 参数设置 |
| pg_shadow | 数据库用户 |
| pg_stats | 规划器统计信息 |
| 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的后端(包括 autovacuum工作者进程)一行, 显示当前的进度。 |
(3)已收集统计信息的视图
| 视图名称 | 描述 |
|---|---|
| pg_stat_archiver | 只有一行,显示有关 WAL 归档进程活动的统计信息。 |
| pg_stat_bgwriter | 只有一行,显示有关后台写进程的活动的统计信息。 |
| pg_stat_database | 每个数据库一行,显示数据库范围的统计信息。 |
| pg_stat_database_conflicts | 每个数据库一行,显示数据库范围的统计信息, 这些信息的内容是关于由于与后备服务器的恢复过程 发生冲突而被取消的查询。 |
| pg_stat_all_tables | 当前数据库中每个表一行,显示有关访问指定表的统计信息。详见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_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、模式名、表名、索引名、 使用了该索引的索引扫描总数、索引扫描返回的索引记录数、使用该索引的简 单索引扫描抓取的活表(livetable)中数据行数。当前数据库中的每个索引一行,显示与访问指定索引有关的统计信息。 |
| 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_all_indexes。 |
| 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相似,但是只统计在当前事务期间的调用(还没有被包括在pg_stat_user_functions中) |
PG中常用的系统视图
1、pg_tables:
该视图提供了对有关数据库中每个表的有用信息地访问。
| 字段名 | 类型 | 引用 | 描述 |
|---|---|---|---|
| schemaname | name | pg_namespace.nspname | 包含表的模式名字。 |
| tablename | name | pg_class.relname | 表的名字。 |
| tableowner | name | pg_authid.rolname | 表的所有者的名字。 |
| tablespace | name | pg_tablespace.spcname | 包含表的表空间名字(如果是数据库缺省,则为 NULL)。 |
| hasindexes | bool | pg_class.relhasindex | 如果表拥有(或者最近拥有)任何索引,则为真。 |
| hasrules | bool | pg_class.relhasrules | 如果表存在规则,则为真。 |
| hastriggers | bool | pg_class.reltriggers | 如果表有触发器,则为真。 |
2、pg_indexes:
该视图提供对数据库中每个索引的有用信息的访问。
| 字段名 | 类型 | 引用 | 描述 |
|---|---|---|---|
| schemaname | name | pg_namespace.nspname | 包含表和索引的模式的名字。 |
| tablename | name | pg_class.relname | 索引所在表的名字。 |
| indexname | name | pg_class.relname | 索引的名字。 |
| tablespace | name | pg_tablespace.spcname | 包含索引的表空间名字(如果是数据库缺省,则为NULL)。 |
| indexdef | text | 索引定义(一个重建的创建命令)。 |
3、pg_views:
该视图提供了对数据库里每个视图的有用信息的访问途径。
| 字段名 | 类型 | 引用 | 描述 |
|---|---|---|---|
| schemaname | name | pg_namespace.nspname | 包含此视图的模式名字。 |
| viewname | name | pg_class.relname | 视图的名字。 |
| viewowner | name | pg_authid.rolname | 视图的所有者的名字。 |
| definition | text | 视图定义(一个重建的SELECT查询)。 |
4、pg_user:
该视图提供了对数据库用户的相关信息的访问。 这个视图只是pg_shadow表的公众可读的部分的视图化,但是不包含口令字段。
| 字段名 | 类型 | 引用 | 描述 |
|---|---|---|---|
| usename | name | 用户名。 | |
| usesysid | int4 | 用户ID(用于引用这个用户的任意数字)。 | |
| usecreatedb | bool | 用户是否可以创建数据库。 | |
| usesuper | bool | 用户是否是一个超级用户。 | |
| usecatupd | bool | 用户是否可以更新系统表。(即使超级用户也不能这么干,除非这个字段为真。) | |
| passwd | text | 口令(可能加密了)。 | |
| valuntil | abstime | 口令失效的时间(只用于口令认证)。 | |
| useconfig | text[] | 运行时配置参数的会话缺省。 |
5、pg_roles:
该视图提供访问数据库角色有关信息的接口。这个视图只是pg_authid表的公开可读部分的视图化,同时把口令字段用空白填充。
| 字段名 | 类型 | 引用 | 描述 |
|---|---|---|---|
| rolname | name | 角色名。 | |
| rolsuper | bool | 是否有超级用户权限的角色。 | |
| rolcreaterole | bool | 是否可以创建更多角色的角色。 | |
| rolcreatedb | bool | 是否可以创建数据库的角色。 | |
| rolcatupdate | bool | 是否可以直接更新系统表的角色。 | |
| rolcanlogin | bool | 如果为真,表示是可以登录的角色。 | |
| rolpassword | text | 不是口令(总是 ********)。 | |
| rolvaliduntil | timestamptz | 口令失效日期(只用于口令认证);如果没有失效期,为NULL。 | |
| rolconfig | text[] | 运行时配置变量的会话缺省。 |
6、pg_rules:
该视图提供对查询重写规则的有用信息访问的接口。
| 字段名 | 类型 | 引用 | 描述 |
|---|---|---|---|
| schemaname | name | pg_namespace.nspname | 包含表的模式的名字。 |
| tablename | name | pg_class.relname | 规则施加影响的表的名字。 |
| rulename | name | pg_rewrite.rulename | 规则的名字。 |
| definition | text | 规则定义(一个重新构造的创建命令)。 |
7、pg_settings:
该视图提供了对服务器运行时参数的访问。它实际上是SHOW和SET命令的另外一种方式。它还提供一些用SHOW不能直接获取的参数的访问,比如最大和最小值。
| 字段名 | 类型 | 引用 | 描述 |
|---|---|---|---|
| name | text | 运行时配置参数名。 | |
| setting | text | 参数的当前值。 | |
| category | text | 参数的逻辑组。 | |
| short_desc | text | 参数的一个简短的描述。 | |
| extra_desc | text | 有关参数的额外的、更详细的信息。 | |
| context | text | 设置这个参数的值要求的环境。 | |
| vartype | text | 参数类型(bool、integer、real和string)。 | |
| source | text | 当前参数值的来源。 | |
| min_val | text | 该参数允许的最小值(非数字值为NULL)。 | |
| max_val | text | 该参数允许的最大值(非数字值为NULL)。 |
我们不能对pg_settings视图进行插入或者删除, 只能更新。
对pg_settings中的一行进行UPDATE等效于在该命名参数上执行SET命令。这个修改值影响当前会话使用的数值。
如果在一个最后退出的事务中发出了UPDATE命令,那么UPDATE命令的效果将在事务回滚之后消失。一旦包围它的事务提交,这个效果将固化,直到会话结束。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




