PostgreSQL pg_stats
在 PostgreSQL 中,pg_stats 是一个系统目录表,用于存储关于表和索引列的统计信息。这些统计信息对于查询优化非常重要,PostgreSQL 使用这些信息来确定最有效的查询计划。以下是 pg_stats 表的一些关键字段:1. schemaname: 列所属表的模式名称。2. tablename: 列所属表的名称。3. attname: 列的名称。4. null_frac: 列中空值的比例。5. avg_width: 列中值的平均宽度。6. n_distinct: 列中唯一值的数量的估计值。7. most_common_vals: 列中最常见值的数组。8. most_common_freqs: 对应于most_common_vals中值的频率数组。9. histogram_bounds: 列的直方图边界。通过查询 pg_stats 表,你可以获取关于表和索引列的统计信息,这对于数据库优化和查询计划的生成非常有帮助。以下是一个简单的查询示例:SELECT * FROM pg_stats WHERE tablename = 'your_table_name';...
PostgreSQL pg_shadow
在 PostgreSQL 中,pg_shadow 是一个系统目录表,用于存储有关数据库用户(角色)的信息。然而,需要注意的是,从 PostgreSQL 10 版本开始,pg_shadow 表已被废弃,取而代之的是 pg_authid 表和 pg_roles 视图。以下是 pg_roles 视图中的一些关键字段,用于替代 pg_shadow:1. rolname: 用户(角色)的名称,唯一标识用户。2. rolsuper: 指示用户是否是超级用户的布尔值。超级用户拥有系统中的最高权限。3. rolinherit: 指示用户是否继承其父用户的权限的布尔值。4. rolcreaterole: 指示用户是否有权创建其他用户的布尔值。5. rolcreatedb: 指示用户是否有权创建数据库的布尔值。6. rolcanlogin: 指示用户是否有权登录到数据库的布尔值。7. rolreplication: 指示用户是否有权进行流复制的布尔值。8. rolbypassrls: 指示用户是否绕过行级安全策略的布尔值。使用 pg_roles 视图,你可以查询有关数据库中所有用户(角色)的信息。以下是一...
PostgreSQL pg_settings
在 PostgreSQL 中,pg_settings 是一个系统视图(view),而不是一个表,用于显示当前 PostgreSQL 服务器的配置参数的信息。这个视图允许你检查和查询当前服务器配置的各种参数。以下是 pg_settings 视图的一些关键字段:1. name: 配置参数的名称。2. setting: 配置参数的当前值。3. unit: 配置参数的单位,例如 "kB" 或 "ms"。4. category: 配置参数的类别,用于组织和分类相关参数。5. short_desc: 配置参数的简短描述。6. extra_desc: 配置参数的额外描述信息。通过查询 pg_settings 视图,你可以获取有关当前 PostgreSQL 服务器配置参数的详细信息。以下是一个简单的查询示例:SELECT name, setting, unit, category, short_desc, extra_desc FROM pg_settings;这将返回所有配置参数的详细信息,包括参数名称、当前值、单位、类别、简短描述和额外描述等。通过这些信息,...
PostgreSQL pg_sequences
在 PostgreSQL 中,pg_sequences 是一个系统目录表,用于存储序列(Sequence)的信息。序列是一种生成自增或自减数字序列的对象,通常用于生成唯一标识符或主键值。以下是 pg_sequences 表的一些关键字段:1. schemaname: 序列所属模式的名称。2. sequencename: 序列的名称,唯一标识序列。3. increment_by: 序列每次递增或递减的步长。4. min_value: 序列的最小值。5. max_value: 序列的最大值。6. start_value: 序列的起始值。7. last_value: 序列的最后一个生成的值。8. is_cycled: 指示序列是否循环的布尔值。如果为真,则序列在达到最大值时重新开始。通过查询 pg_sequences 表,你可以获取有关数据库中所有序列的详细信息。以下是一个简单的查询示例:SELECT * FROM pg_sequences;这将返回所有序列的详细信息,包括序列名称、步长、最小值、最大值、起始值等。通过这些信息,你可以了解数据库中所有序列的配置和状态。序列通常在表的列中作为默...
PostgreSQL pg_seclabels
在 PostgreSQL 中,pg_seclabels 是一个系统目录表,用于存储有关数据库对象的安全标签(security labels)信息。安全标签是关联到数据库对象上的一种元数据,用于实施数据库级别的安全策略。以下是 pg_seclabels 表的一些关键字段:1. oid: 安全标签的对象标识符(OID)。2. classoid: 安全标签所属类的 OID,指示标签所关联的数据库对象类型。3. objoid: 安全标签关联的对象的 OID。4. objsubid: 对象子标识符,用于标识对象中的子对象(例如表的列)。5. provider: 安全标签提供程序的名称。6. label: 实际的安全标签值。通过查询 pg_seclabels 表,你可以获取有关数据库中所有对象的安全标签信息。以下是一个简单的查询示例:SELECT * FROM pg_seclabels;这将返回所有安全标签的详细信息,包括对象类型、对象 OID、提供程序、标签值等。安全标签通常用于实施数据库级别的安全策略,例如访问控制和审计。通过这些信息,你可以了解数据库对象上应用的安全标签,以及它们如何影响数据...
PostgreSQL pg_rules
在 PostgreSQL 中,pg_rules 表已经被视为系统目录表的一部分,用于存储规则(Rules)的信息。规则是一种用于在查询执行过程中转换或重新写入查询的机制。它们通常用于实现视图的更新、插入和删除规则等。以下是 pg_rules 表的一些关键字段:1. oid: 规则的对象标识符(OID)。2. rulename: 规则的名称,唯一标识规则。3. tableoid: 规则所属表的 OID。4. definition: 规则的定义,即规则的执行代码。5. is_instead: 指示规则是否是替代规则的布尔值。如果为真,则该规则是替代规则,否则是普通规则。6. ev_type: 规则事件的类型,例如插入、更新或删除。7. ev_class: 规则所属类的 OID。在这里,类指的是规则所作用的表。8. ev_attr: 规则事件所涉及的属性的位掩码。通过查询 pg_rules 表,你可以获取有关数据库中所有规则的信息。以下是一个简单的查询示例:SELECT * FROM pg_rules;这将返回所有规则的详细信息,包括规则名称、所属表、定义、事件类型等。通过这些信息,你可以了...
PostgreSQL pg_roles
pg_roles 是 PostgreSQL 中用于存储角色(用户和组)信息的系统目录表之一。在 PostgreSQL 中,用户和组被统称为角色,它们在数据库中被用于管理访问权限和连接到数据库的身份。以下是 pg_roles 表的一些关键字段:1. rolname: 角色的名称,唯一标识角色。2. rolsuper: 指示角色是否是超级用户的布尔值。超级用户拥有系统中的最高权限。3. rolinherit: 指示角色是否继承其父角色的权限的布尔值。4. rolcreaterole: 指示角色是否有权创建其他角色的布尔值。5. rolcreatedb: 指示角色是否有权创建数据库的布尔值。6. rolcanlogin: 指示角色是否有权登录到数据库的布尔值。7. rolreplication: 指示角色是否有权进行流复制的布尔值。8. rolbypassrls: 指示角色是否绕过行级安全策略的布尔值。通过查询 pg_roles 表,你可以获取有关数据库中所有角色的信息。以下是一个简单的查询示例:SELECT * FROM pg_roles;这将返回所有角色的详细信息,包括角色名称、是否是超...
PostgreSQL pg_replication_slots
pg_replication_slots 是 PostgreSQL 中用于管理逻辑复制槽的系统目录表之一。逻辑复制槽是一种机制,通过它可以在主数据库和一个或多个从数据库之间进行逻辑复制。以下是关于 pg_replication_slots 表的一些重要信息:1. slot_name: 复制槽的名称,用于标识复制槽。2. plugin: 复制槽使用的插件的名称。在逻辑复制中,通常使用 pgoutput 插件。3. slot_type: 复制槽的类型。对于逻辑复制,通常是 logical。4. datoid: 拥有该复制槽的数据库的 OID。5. database: 拥有该复制槽的数据库的名称。6. active: 指示该槽当前是否处于活动状态的布尔值。7. active_pid: 如果槽处于活动状态,这是正在使用该槽的进程的进程ID。使用 pg_replication_slots 表,你可以查看当前系统中的所有逻辑复制槽,了解它们的状态以及与之相关的信息。以下是一个简单的查询示例:SELECT * FROM pg_replication_slots;这将返回所有复制槽的详细信息,包括槽的...
PostgreSQL pg_replication_origin_status
在 PostgreSQL 中,pg_replication_origin_status 是一个系统视图,提供有关逻辑复制(Logical Replication)的复制起源(Replication Origin)状态的信息。以下是 pg_replication_origin_status 视图的一些相关列: roident: 复制起源的标识符。 roname: 复制起源的名称。 rosent: 复制起源的起始点位置。 rocommit: 复制起源的提交位置。 rorollback: 复制起源的回滚位置。 ronextxid: 复制起源的下一个事务 ID。 rorplid: 复制起源的复制 ID。你可以通过以下 SQL 查询来获取有关逻辑复制的复制起源状态的信息:SELECT * FROM pg_replication_origin_status;这将返回包含有关复制起源状态的详细信息的结果集。请注意,访问系统视图时需要相应的权限,通常只有超级用户或具有适当权限的用户可以执行这些查询。如果 PostgreSQL 的版本更新,可能会有一些变化,建议查阅相应版本的官方文档以获取准确和最新的信...
PostgreSQL pg_publication_tables
pg_publication_tables 是 PostgreSQL 中的一个系统视图,用于提供与发布(Publication)相关的信息,包括哪些表被包含在发布中。以下是 pg_publication_tables 视图的一些相关列: oid: 表的唯一标识符(Object Identifier)。 pubname: 发布的名称。 relid: 表的唯一标识符,关联到 pg_class 表中的 oid。 pubinsert: 表是否包含在发布的插入操作中。 pubupdate: 表是否包含在发布的更新操作中。 pubdelete: 表是否包含在发布的删除操作中。 pubtruncate: 表是否包含在发布的截断操作中。你可以通过以下 SQL 查询来获取有关发布中包含的表的信息:SELECT * FROM pg_publication_tables;这将返回包含有关发布中包含的表的详细信息的结果集。请注意,访问系统视图时需要相应的权限,通常只有超级用户或具有适当权限的用户可以执行这些查询。如果 PostgreSQL 的版本更新,可能会有一些变化,建议查阅相应版本的官方文档以获取准确和最...
PostgreSQL pg_policies
pg_policies 是 PostgreSQL 中的系统表,用于存储行级安全策略(Row-Level Security Policies)的信息。行级安全策略允许数据库管理员定义基于特定条件的访问控制规则,以便限制用户对表中数据的访问。以下是 pg_policies 表的一些重要列和其含义: polname: 策略的名称。 polrelid: 策略所属的表的 OID。 polroles: 适用于策略的角色(用户或用户组)。 polcmd: 策略适用的命令类型(SELECT、INSERT、UPDATE、DELETE)。 polqual: 策略的谓词,定义了何时策略生效的条件。 polwithcheck: 策略的检查条件,用于确保插入或更新满足特定条件。要获取 pg_policies 表的信息,可以执行以下 SQL 查询:SELECT * FROM pg_policies;这将返回包含所有行级安全策略信息的结果集。请注意,访问系统表时需要相应的权限,通常只有超级用户或具有适当权限的用户可以执行这些查询。行级安全策略是 PostgreSQL 中实现细粒度访问控制的一种重要机制。
PostgreSQL pg_matviews
在 PostgreSQL 中,pg_matviews 不是一个直接存在的系统表或系统视图。通常,关于材料化视图(Materialized Views)的信息可以在 pg_class 和 pg_matviews 视图中找到。1. pg_matviews: pg_matviews 是一个系统视图,提供了关于材料化视图的基本信息,如视图名称、所属模式、所有者等。以下是一些相关的列: - schemaname: 视图所属的模式名称。 - matviewname: 材料化视图的名称。 - matviewowner: 材料化视图的所有者。 SELECT * FROM pg_matviews;2. pg_class: 实际上,材料化视图的详细信息通常存储在 pg_class 表中。在这里,你可以查找关于表(包括材料化视图)的详细信息,如表名、表类型、表的大小等。 SELECT * FROM pg_class WHERE relkind = 'm'; 上述查询中,relkind = 'm' 条件用于筛选材料化视图。请注意,访问系统表和视图...
PostgreSQL pg_locks
在 PostgreSQL 中,pg_locks 是一个系统视图,用于提供关于当前数据库中所有锁的信息。这个视图包含了每个锁的详细信息,包括锁类型、锁的持有者、锁的目标等。以下是 pg_locks 视图的一些重要列和其含义: locktype: 锁的类型(如行锁、表锁等)。 database: 拥有锁的数据库的 OID。 relation: 拥有锁的表或索引的 OID。 page: 拥有锁的页的编号。 tuple: 拥有锁的元组(行)的编号。 virtualxid: 虚拟事务 ID。 transactionid: 持有锁的事务的 ID。 classid: 表示锁定的对象类别的 OID。 objid: 锁定的对象的 OID。 objsubid: 表示锁定的对象的子标识符。要获取 pg_locks 视图的信息,可以执行以下 SQL 查询:SELECT * FROM pg_locks;这将返回包含有关当前数据库中所有锁的详细信息的结果集。锁信息对于诊断和调试并发性问题非常有用。请注意,访问系统视图时需要相应的权限,通常只有超级用户或具有适当权限的用户可以执行这些查询。
PostgreSQL pg_indexes
pg_indexes 是 PostgreSQL 中的一个系统视图,用于提供关于数据库中所有索引的信息。这个视图包含了关于每个索引的详细信息,包括索引名称、所属表、索引定义、索引方法等。以下是 pg_indexes 视图的一些重要列和其含义: schemaname: 索引所属表的模式名称。 tablename: 索引所属的表名。 indexname: 索引的名称。 indexdef: 索引的定义。 tablespace: 索引所在的表空间。 tableowner: 表的所有者。 indexam: 索引方法(B-tree、Hash 等)。 indexprs: 如果索引是函数索引,包含了函数表达式。 indisunique: 表示索引是否唯一。 indisexclusion: 表示索引是否是排他的。 indimmediate: 表示索引是否是立即生效的。要获取 pg_indexes 视图的信息,可以执行以下 SQL 查询:SELECT * FROM pg_indexes;这将返回包含有关数据库中所有索引的详细信息的结果集。这对于了解数据库中索引的配置和性能优化非常有用。请注意,访问系统视图时...
PostgreSQL pg_available_extension_versions
在 PostgreSQL 中,pg_available_extension_versions 是一个系统视图,用于提供有关可用扩展版本的信息。这个视图包含了每个扩展的所有可用版本,允许用户查看可用的扩展及其版本号。以下是 pg_available_extension_versions 视图的一些重要列和其含义: name: 扩展的名称。 version: 扩展的版本号。 installed: 一个布尔值,指示该版本是否已经安装。要获取 pg_available_extension_versions 视图的信息,可以执行以下 SQL 查询:SELECT * FROM pg_available_extension_versions;这将返回包含所有可用扩展版本信息的结果集。这个信息对于确定是否需要升级已安装的扩展版本以及查看可用的扩展版本非常有用。请注意,访问系统视图时需要相应的权限,通常只有超级用户或具有适当权限的用户可以执行这些查询。
PostgreSQL pg_available_extensions
在 PostgreSQL 中,pg_available_extensions 是一个系统视图,用于提供有关可用扩展(extensions)的信息。扩展是 PostgreSQL 的一种机制,允许用户添加功能和特性而无需修改核心数据库引擎。以下是 pg_available_extensions 视图的一些重要列和其含义: name: 扩展的名称。 default_version: 扩展的默认版本号。 installed_version: 已安装的扩展版本号(如果已安装)。 comment: 关于扩展的描述性注释。 schema: 扩展所属的模式(通常为 "public")。要获取 pg_available_extensions 视图的信息,可以执行以下 SQL 查询:SELECT * FROM pg_available_extensions;这将返回包含所有可用扩展信息的结果集。管理员和开发人员可以使用这些信息来了解系统中哪些扩展可用以及它们的版本情况。当需要添加新功能时,可以通过安装合适的扩展来扩展 PostgreSQL 的功能集。请注意,访问系统视图时需要相应的权限...
PostgreSQL 系统视图
PostgreSQL 提供了许多系统视图,这些视图包含了关于数据库、表、索引、用户权限等方面的信息。以下是一些常用的 PostgreSQL 系统视图:1. pg_tables: 存储关于数据库中所有表的信息,如表名、所属模式、所有者等。 SELECT * FROM pg_tables;2. pg_views: 包含关于数据库中所有视图的信息,类似于 pg_tables。 SELECT * FROM pg_views;3. pg_indexes: 包含数据库中所有索引的信息,如索引名称、表名、索引类型等。 SELECT * FROM pg_indexes;4. pg_users: 存储有关数据库用户的信息,包括用户名、用户类型、是否是超级用户等。 SELECT * FROM pg_users;5. pg_roles: 类似于 pg_users,提供数据库角色的信息,包括角色名、是否是超级用户、是否是登录角色等。 SELECT * FROM pg_roles;6. pg_database: 包含关于数据库的信息,如数据库名、所有者、编码方式等。 ...
PostgreSQL pg_user_mapping
pg_user_mapping 是 PostgreSQL 中的系统表之一,用于存储用户映射(User Mapping)的信息。用户映射允许将数据库用户映射到外部数据服务器上的用户,以便在访问外部数据时进行身份验证和授权。以下是 pg_user_mapping 表的一些重要列和其含义: oid: 对象的唯一标识符(Object Identifier)。 umuser: 用户映射关联的数据库用户。 umserver: 用户映射关联的外部数据服务器。 umoptions: 用户映射的选项,包括连接外部服务器所需的参数。要获取 pg_user_mapping 表的信息,可以执行以下 SQL 查询:SELECT * FROM pg_user_mapping;这将返回包含所有用户映射信息的结果集。请注意,访问系统表时需要相应的权限,通常只有超级用户或具有适当权限的用户可以执行这些查询。用户映射在使用外部数据表时特别有用,它允许在 PostgreSQL 数据库中使用外部数据源的身份验证信息。
PostgreSQL pg_type
pg_type 是 PostgreSQL 中的一个系统表,用于存储数据库中定义的所有数据类型的信息。每个数据类型在这个表中都有一条记录,包括其名称、唯一标识符(OID)、类型的分类(基本类型、复合类型等)、类型的长度和其他相关信息。以下是 pg_type 表的一些重要列和其含义: oid: 对象的唯一标识符(Object Identifier)。 typname: 数据类型的名称。 typnamespace: 数据类型所属的命名空间。 typowner: 数据类型的所有者(通常是用户)。 typlen: 数据类型的长度(以字节为单位)。 typbyval: 表示该数据类型是否按值传递。 typtype: 数据类型的分类(b:基本类型,c:复合类型,d:域类型,e:枚举类型)。 typcategory: 数据类型的类别(如数值、字符串等)。 typinput: 用于将外部表示的数据转换为内部表示的函数。 typoutput: 用于将内部表示的数据转换为外部表示的函数。要获取 pg_type 表的信息,可以执行以下 SQL 查询:SELECT * FROM pg_type;这将返回包含所有...
PostgreSQL pg_ts_template
pg_ts_template 是 PostgreSQL 中的系统表之一,用于存储全文搜索模板(Text Search Template)的信息。全文搜索模板定义了如何将文本数据转换为可用于全文搜索索引的形式。以下是 pg_ts_template 表的一些重要列和其含义: oid: 对象的唯一标识符(Object Identifier)。 tmplname: 模板的名称。 tmplnamespace: 模板所属的命名空间。 tmplinit: 模板的初始化函数,用于初始化模板的状态。 tmpllexize: 模板的词法分析函数,用于将文本分解成标记或词汇。要获取 pg_ts_template 表的信息,可以执行以下 SQL 查询:SELECT * FROM pg_ts_template;这将返回包含所有全文搜索模板信息的结果集。请注意,访问系统表时需要相应的权限,通常只有超级用户或具有适当权限的用户可以执行这些查询。