View a markdown version of this page

Aurora DSQL 中的系统表和命令 - Amazon Aurora DSQL

Aurora DSQL 中的系统表和命令

请参阅以下各节来了解 Aurora DSQL 中支持的系统表和目录,以及用于获取有关系统的信息(如版本)的有用查询。

系统表

Aurora DSQL 与 PostgreSQL 兼容,因此 Aurora DSQL 中还存在许多来自 PostgreSQL 的 system catalog tables 和 views。

重要的 PostgreSQL 目录表和视图

下表介绍了您可能在 Aurora DSQL 中使用的最常见的表和视图。

名称 描述

pg_namespace

有关所有架构的信息

pg_tables

有关所有表的信息

pg_attribute

有关所有属性的信息

pg_views

有关(预)定义视图的信息

pg_class

描述所有表、列、索引和类似对象

pg_stats

有关计划程序统计数据的视图

pg_user

有关用户的信息

pg_roles

有关用户和组的信息

pg_indexes

列出所有索引

pg_constraint

列出对表的约束

支持和不支持的目录表

下表指示在 Aurora DSQL 中支持哪些表和不支持哪些表。

名称 适用于 Aurora DSQL

pg_aggregate

否

pg_am

是

pg_amop

否

pg_amproc

否

pg_attrdef

是

pg_attribute

是

pg_authid

否(使用 pg_roles)

pg_auth_members

支持

pg_cast

是

pg_class

是

pg_collation

是

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_parameter_acl

是

pg_partitioned_table

否

pg_policy

否

pg_proc

否

pg_publication

否

pg_publication_namespace

否

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

否

支持和不支持的系统视图

下表指示在 Aurora DSQL 中支持哪些视图和不支持哪些视图。

名称 适用于 Aurora DSQL

pg_available_extensions

否

pg_available_extension_versions

否

pg_backend_memory_contexts

是

pg_config

否

pg_cursors

否

pg_file_settings

否

pg_group

是

pg_hba_file_rules

否

pg_ident_file_mappings

否

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_shmem_allocations

是

pg_stats

是

pg_stats_ext

否

pg_stats_ext_exprs

否

pg_tables

是

pg_timezone_abbrevs

是

pg_timezone_names

是

pg_user

是

pg_user_mappings

否

pg_views

是

pg_stat_activity

否

pg_stat_replication

否

pg_stat_replication_slots

否

pg_stat_wal_receiver

否

pg_stat_recovery_prefetch

否

pg_stat_subscription

否

pg_stat_subscription_stats

否

pg_stat_ssl

是

pg_stat_gssapi

否

pg_stat_archiver

否

pg_stat_io

否

pg_stat_bgwriter

否

pg_stat_wal

否

pg_stat_database

否

pg_stat_database_conflicts

否

pg_stat_all_tables

否

pg_stat_all_indexes

否

pg_statio_all_tables

否

pg_statio_all_indexes

否

pg_statio_all_sequences

否

pg_stat_slru

否

pg_statio_user_tables

否

pg_statio_user_sequences

否

pg_stat_user_functions

否

pg_stat_user_indexes

否

pg_stat_progress_analyze

否

pg_stat_progress_basebackup

否

pg_stat_progress_cluster

否

pg_stat_progress_create_index

否

pg_stat_progress_vacuum

否

pg_stat_sys_indexes

否

pg_stat_sys_tables

否

pg_stat_xact_all_tables

否

pg_stat_xact_sys_tables

否

pg_stat_xact_user_functions

否

pg_stat_xact_user_tables

否

pg_statio_sys_indexes

否

pg_statio_sys_sequences

否

pg_statio_sys_tables

否

pg_statio_user_indexes

否

sys.jobs 视图

sys.jobs 提供有关异步作业的状态信息。例如,在您创建异步索引后,Aurora DSQL 将返回 job_uuid。您可以将此 job_uuid 与 sys.jobs 结合使用来查找作业的状态。

SELECT * FROM sys.jobs;

Aurora DSQL 返回与下面类似的响应。

job_id | status | details | job_type | class_id | object_id | object_name | start_time | update_time ----------------------------+-----------+---------+-------------+----------+-----------+-------------------+------------------------+------------------------ wqhu6ewifze5xitg3umt24h5ua | completed | | INDEX_BUILD | 1259 | 26433 | public.nt2_c1_idx | 2025-09-25 22:07:31+00 | 2025-09-25 22:07:46+00 kkngzf33dndl3daacxehpx5eba | completed | | ANALYZE | 1259 | 26419 | public.nt | 2025-09-25 21:57:05+00 | 2025-09-25 21:57:27+00 fyopxjb6ovdn7po6lrkj63cyea | completed | | DROP | 1259 | 26422 | | 2025-09-25 22:05:57+00 | 2025-09-25 22:06:03+00

下表介绍 sys.jobs 视图中的各列。

sys.jobs 视图列
列 类型 说明
job_id text 一个 32 位的 UUID,表示作业。
status text 作业的当前状态。可能的值为 submitted、processing、completed 和 failed。有关更多信息,请参阅 sys.jobs 状态值。
details text 有关作业的任何相关详细信息。如果任务失败,则会提供详细原因。
job_type text 异步作业的类型。可能的值为:INDEX_BUILD – 异步索引构建。ANALYZE – 系统提交的自动分析作业。DROP – 在 DROP TABLE 或 DROP INDEX 操作后移除物理数据。
class_id oid 包含该对象的目录表的 OID。
object_id oid 对象的 OID。
object_name text 对象的完全限定名称。DROP 作业无法引用已经删除的对象。如果已经删除引用的对象,则 object_name 可能为 NULL。
start_time timestamp with time zone 提交作业的时间戳。
update_time timestamp with time zone 上次更新作业行的时间戳。
sys.jobs 状态值
Status 说明
submitted 任务已提交,但是 Aurora DSQL 尚未开始处理该任务。
processing Aurora DSQL 正在处理该任务。
failed 任务失败。有关更多信息,请参阅 details 列。
completed Aurora DSQL 已成功完成任务。

sys.iam_pg_role_mappings 视图

视图 sys.iam_pg_role_mappings 提供有关授予 IAM 用户的权限的信息。例如,如果 DQSLDBConnect 是一个 IAM 角色,该角色为非管理员提供 Aurora DSQL 访问权限,并且向名为 testuser 的用户授予了 DQSLDBConnect 角色和相应的权限,则您可以查询 sys.iam_pg_role_mappings 视图来查看向哪些用户授予了哪些权限。

SELECT * FROM sys.iam_pg_role_mappings;

有用的系统元数据查询

使用这些查询可以获取表统计数据和系统元数据,而无需执行诸如全表扫描之类的高代价操作。

获取表的估计行计数

要在不执行全表扫描的情况下获取表中的大致行计数,请使用以下查询:

SELECT reltuples FROM pg_class WHERE relname = 'table_name';

该命令返回的输出类似于下方内容:

  reltuples
--------------
 9.993836e+08

对于 Aurora DSQL 中的大型表,这种方法比 SELECT COUNT(*) 更高效。

获取当前 Aurora DSQL 主要版本

要获取 Aurora DSQL 集群的当前主要版本,请使用以下查询:

SELECT * FROM sys.dsql_major_version();

该命令返回的输出类似于下方内容:

 dsql_major_version
--------------------
                  1

这将返回 Aurora DSQL 中 SQL 连接处于开启状态的主要版本。

获取当前 PostgreSQL 版本

要获取 Aurora DSQL 集群的当前 PostgreSQL 版本,请使用以下查询:

SHOW server_version;

该命令返回的输出类似于下方内容:

 server_version
----------------
 16.13

这将返回 Aurora DSQL 中 SQL 连接处于开启状态的 PostgreSQL 版本。

ANALYZE 命令

ANALYZE 命令收集有关数据库中表内容的统计数据,并将结果存储在 pg_stats 系统视图中。随后,查询计划程序使用这些统计数据来帮助确定最有效的查询执行计划。

在 Aurora DSQL 中,您无法在显式事务中运行 ANALYZE 命令。ANALYZE 不受数据库事务超时限制的约束。

为了减少手动干预的需要并将统计数据始终保持为最新,Aurora DSQL 会自动将 ANALYZE 作为后台进程运行。此后台作业会根据在表中观察到的变化率自动触发。它与自上次分析以来已插入、更新或删除的行(元组)数相关联。

ANALYZE 在后台异步运行,可以通过以下查询在系统视图 sys.jobs 中监控其活动:

SELECT * FROM sys.jobs WHERE job_type = 'ANALYZE';

重要注意事项

注意

ANALYZE 作业的计费方式与 Aurora DSQL 中的其它异步作业相同。修改表时,这可能会间接触发自动后台统计数据收集作业,这可能会因关联的系统级活动而产生计量费用。

自动触发的后台 ANALYZE 作业收集的统计数据类型与手动 ANALYZE 相同,默认情况下会将其应用于用户表。系统表和目录表不包括在此自动化流程中。