关于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
在当前用户和当前环境的上下文中,指定表的行级别安全性是否处于活动状态
函数名字 用途 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
类型(或域)在搜索路径中是否可见
函数名字 用途 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
访问方法是否支持 INCLUDE
? CREATE 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 指定的共享数据库对象的注释以及包含系统目录的名称
函数名字 用途 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 是否可见