关于PostgreSQL系统表、函数,看完这篇就够了!

关于PostgreSQL系统表、函数,看完这篇就够了!

Whoami:5年+金融、政府、医疗领域工作经验的DBA
Certificate:OCP、PCP
Skill:Oracle、Mysql、PostgreSQL
Platform:CSDN、墨天伦、公众号(呆呆的私房菜)

业务范围:数据库安装部署、日常维护、主备切换、故障处理、性能优化、技术培训等。
需要的伙伴或者商业合作请移步 公众号【呆呆的私房菜】获取联系方式。

阅读本文可以了解到PostgreSQL数据库系统表、函数相关的内容。

01 系统表模式

除了public和用户创建的模式之外,每个数据库都包含一个pg_catalog模式,它包含了系统表和所有内置数据类型、函数和操作符。
pg_catalog总是搜索路径中的一部分,如果它没有明确出现在路径中,那么它会隐含地在路径模式之前搜索。

02 系统表

select relkind, relname from pg_class 
where relnamespace = (select oid from pg_namespace where nspname='pg_catalog') and relkind = 'r' order by 1, 2;
目录名 用途
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_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_statistic_ext_data 扩展的规划器统计信息(已构建的统计信息)
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 将用户映射到外部服务器

03 系统视图

## 查看所有系统视图
select relkind,relname from pg_class 
where relnamespace = (select oid from pg_namespace where nspname='pg_catalog') and relkind = 'v' order by 1, 2;
视图名字 用途
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 publication和它们相关的表
pg_replication_origin_status 有关复制源的信息,包括复制进度
pg_replication_slots 复制槽信息
pg_roles 数据库角色
pg_rules 规则
pg_seclabels 安全标签
pg_sequences 序列
pg_settings 参数设置
pg_shadow 数据库用户
pg_shmem_allocations 共享内存分配
pg_stats 规划器统计信息
pg_stats_ext 扩展的计划器统计信息
pg_tables
pg_timezone_abbrevs 时区简写
pg_timezone_names 时区名字
pg_user 数据库用户
pg_user_mappings 用户映射
pg_views 视图

04 系统函数

参考链接:https://www.postgresql.org/docs/14/functions-info.html

  • 会话信息函数:
函数名字 用途
current_catalog 返回当前数据库的名称
current_query 返回客户端提交的当前正在执行的查询文本
current_role 返回当前role
current_schema 返回搜索路径中第一个出现的架构的名称
current_user 返回当前用户名
inet_client_addr 返回当前客户端的 IP 地址
inet_client_port 返回当前客户端的 IP 端口号
inet_server_addr 返回服务器接受当前连接的 IP
inet_client_port 返回当前客户端的 IP 端口号
inet_server_port 返回服务器接受当前连接的 IP 端口号
pg_backend_pid 返回附加到当前会话的服务器进程的进程 ID。
pg_blocking_pids 返回一个会话的进程 ID 数组
pg_conf_load_time 返回上次加载服务器配置文件的时间
pg_current_logfile 返回日志记录收集器当前正在使用的日志文件的路径名
pg_my_temp_schema 返回当前会话的临时架构的 OID
pg_is_other_temp_schema 如果给定的 OID 是另一个会话的临时架构的 OID返回true
pg_jit_available 如果 JIT 编译器扩展可用(请参阅第 32 章),并且 jit 配置参数设置为 on ,则返回 true。
pg_listening_channels 返回当前会话正在侦听的异步通知通道的名称集
pg_notification_queue_usage 异步通知队列的最大大小的分数 (0–1),该大小当前由等待处理的通知占用
pg_postmaster_start_time 返回服务器启动的时间。
pg_safe_snapshot_blocking_pids 返回一个会话的进程 ID 数组,这些会话阻止具有指定进程 ID 的服务器进程获取安全快照,如果没有此类服务器进程或未阻止该进程,则返回一个空数组
pg_trigger_depth 返回会话用户的名称
session_user 返回当前会话正在侦听的异步通知通道的名称集
user 相当于current_user
version 返回PostgreSQL服务器版本
  • 权限查询函数:
函数名字 用途
has_any_column_privilege 用户是否对表的任何列具有权限
has_column_privilege 用户是否具有指定表列的权限
has_database_privilege 用户是否具有数据库的权限
has_foreign_data_wrapper_privilege 用户是否具有外部数据包装器的权限
has_function_privilege 用户是否具有函数权限
has_language_privilege 用户是否具有语言权限
has_schema_privilege 用户是否具有schema的权限
has_sequence_privilege 用户是否具有序列的权限
has_server_privilege 用户是否具有使用外部服务器的权限
has_table_privilege 用户是否具有表的权限
has_tablespace_privilege 用户是否具有表空间的权限
has_type_privilege 用户是否具有数据类型的权限
pg_has_role 用户是否具有角色权限
row_security_active 在当前用户和当前环境的上下文中,指定表的行级别安全性是否处于活动状态
  • 管理aclitem函数:
函数名字 用途
acldefault(type, ownerId) 用户是否对表的任何列具有权限
aclexplode(aclitem[]) 用户是否具有指定表列的权限
makeaclitem(grantee, grantor, privilege, grantable) 用从输入中建立一个aclitem
  • 模式可见性查询函数
函数名字 用途
pg_collation_is_visible 排序规则在搜索路径中是否可见
pg_conversion_is_visible 转化在搜索路径中是否可见
pg_function_is_visible 函数在搜索路径中是否可见
pg_opclass_is_visible 运算类在搜索路径中是否可见
pg_operator_is_visible 运算符在搜索路径中是否可见
pg_opfamily_is_visible 算子族在搜索路径中是否可见
pg_statistics_obj_is_visible 统计信息对象在搜索路径中是否可见
pg_table_is_visible 表格在搜索路径中是否可见
pg_ts_config_is_visible 文本搜索配置在搜索路径中是否可见
pg_ts_dict_is_visible 文本搜索词典在搜索路径中是否可见
pg_ts_parser_is_visible 文本搜索解析器在搜索路径中是否可见
pg_ts_template_is_visible 文本搜索模板在搜索路径中是否可见
pg_type_is_visible 类型(或域)在搜索路径中是否可见
  • catalog函数
函数名字 用途
format_type 返回由其类型 OID 标识的数据类型的 SQL 名称
pg_get_catalog_foreign_keys 返回一组记录,用于描述 PostgreSQL 系统目录中存在的外键关系
pg_get_constraintdef 重建约束的创建命令
pg_get_expr 反编译存储在系统目录中的表达式的内部形式,例如列的默认值
pg_get_functiondef 重构函数或过程的创建命令
pg_get_function_arguments 以函数或过程需要出现在其中 CREATE FUNCTION 的形式(包括默认值)重建函数或过程的参数列表
pg_get_function_identity_arguments 重建标识函数或过程所需的参数列表,其形式需要出现在诸如 ALTER FUNCTION 的命令中
pg_get_function_result 以函数需要出现在 中 CREATE FUNCTION 的形式重构函数 RETURNS 的子句。过程的返回 NULL 。
pg_get_indexdef 重建索引的创建命令
pg_get_keywords 返回一组记录,描述服务器识别的 SQL 关键字。
pg_get_ruledef 重建规则的创建命令
pg_get_serial_sequence 返回与列关联的序列的名称,如果没有与列关联的序列,则返回 NULL
pg_get_statisticsobjdef 为扩展统计信息对象重建创建命令
pg_get_triggerdef 重建触发器的创建命令
pg_get_userbyid 返回给定其 OID 的角色名称
pg_get_viewdef 重建视图或实例化视图的基础 SELECT 命令
pg_index_column_has_property 测试索引列是否具有命名属性
pg_index_has_property 测试索引是否具有命名属性。
pg_indexam_has_property 测试索引访问方法是否具有 named 属性
pg_options_to_table 返回由 中的 pg_class 值表示的存储选项集
pg_tablespace_databases 返回在指定表空间中存储对象的数据库的 OID 集
pg_tablespace_location 返回此表空间所在的文件系统路径
COLLATION FOR ( "any" ) 返回传递给它的值的排序规则的名称
to_regclass 将文本关系名称转换为其 OID
to_regcollation 将文本排序规则名称转换为其 OID
to_regnamespace 将文本模式名称转换为其 OID
to_regoper 将文本运算符名称转换为其 OID
to_regoperator 将文本运算符名称(带有参数类型)转换为其 OID
to_regproc 将文本函数或过程名称转换为其 OID
to_regprocedure 将文本函数或过程名称(带有参数类型)转换为其 OID
to_regrole 将文本角色名称转换为其 OID
to_regtype 将文本类型名称转换为其 OID
  • 索引列属性函数
函数名字 用途
asc 列在正向扫描时是否按升序排序?
desc 列在正向扫描时是否按降序排序?
nulls_first 列是否在正向扫描时首先使用 null 排序
null_last 使用 null 排序的列是否在正向扫描中持续存在
orderable 该列是否具有任何定义的排序顺序
distance_orderable 例如 ORDER BY col <-> constant ,是否可以通过“距离”操作员按顺序扫描色谱柱
returnable 仅索引扫描是否可以返回列值
search_array 该列是否原生支持 col = ANY(array) 搜索
search_nulls 该列是否支持 IS NULL 和 IS NOT NULL 搜索
pg_get_userbyid 返回给定其 OID 的角色名称
clusterable 索引是否支持在 CLUSTER 命令中使用
sindex_scan 索引是否支持扫描
sbitmap_scan 索引是否支持位图扫描
backward_scan 是否可以在扫描过程中更改扫描方向(以在不需要具体化的情况下支持 FETCH BACKWARD 光标)?
can_order 访问方式是否支持 ASC , DESC 以及中的 CREATE INDEX 相关关键字
can_unique 访问方式是否支持唯一索引
can_multi_col 访问方式是否支持多列索引
can_exclude 访问方法是否支持排除约束
can_include 访问方法是否支持 INCLUDECREATE INDEX
  • 对象信息和寻址函数
函数名字 用途
pg_describe_object 返回由目录 OID、对象 OID 和子对象 ID 标识的数据库对象的文本说明
pg_identify_object 返回一行,其中包含足够的信息,以唯一标识由目录 OID、对象 OID 和子对象 ID 指定的数据库对象
pg_identify_object_as_address 返回一行,其中包含足够的信息,以唯一标识由目录 OID、对象 OID 和子对象 ID 指定的数据库对象
pg_get_object_address 返回一行,其中包含足够的信息,以唯一标识由类型、代码和对象名称以及参数数组指定的数据库对象。
  • 描述信息函数
函数名字 用途
col_description 返回表列的注释,该注释由其表的 OID 及其列号指定
obj_description 返回由其 OID 指定的数据库对象的注释以及包含系统目录的名称
obj_description 返回仅由其 OID 指定的数据库对象的注释
shobj_description 返回由其 OID 指定的共享数据库对象的注释以及包含系统目录的名称
  • 事务ID和快照信息函数
函数名字 用途
pg_current_xact_id 返回当前事务的 ID,如果当前事务还没有一个(因为它尚未执行任何数据库更新),它将分配一个新的
pg_current_xact_id_if_assigned 返回当前事务的 ID,如果 NULL 尚未分配 ID,则返回。(如果事务可能是只读的,则最好使用此变体,以避免不必要地使用 XID
pg_xact_status 报告最近事务的提交状态
pg_current_snapshot 返回当前快照,这是一个数据结构,显示现在正在处理的事务 ID
pg_snapshot_xip 返回当前事务的 ID,如果当前事务还没有一个(因为它尚未执行任何数据库更新),它将分配一个新的
pg_snapshot_xmax 返回快照 xmax
pg_snapshot_xmin 返回快照 xmin
pg_visible_in_snapshot 根据此快照,给定的事务 ID 是否可见
posted @ 2025-03-31 12:32  呆呆的私房菜  阅读(43)  评论(1)    收藏  举报