Aurora DSQL 中的系统表和命令
请参阅以下各节来了解 Aurora DSQL 中支持的系统表和目录,以及用于获取有关系统的信息(如版本)的有用查询。
系统表
Aurora DSQL 与 PostgreSQL 兼容,因此 Aurora DSQL 中还存在许多来自 PostgreSQL 的 system catalog tables
重要的 PostgreSQL 目录表和视图
下表介绍了您可能在 Aurora DSQL 中使用的最常见的表和视图。
| 名称 | 描述 |
|---|---|
|
|
有关所有架构的信息 |
|
|
有关所有表的信息 |
|
|
有关所有属性的信息 |
|
|
有关(预)定义视图的信息 |
|
|
描述所有表、列、索引和类似对象 |
|
|
有关计划程序统计数据的视图 |
|
|
有关用户的信息 |
|
|
有关用户和组的信息 |
|
|
列出所有索引 |
|
|
列出对表的约束 |
支持和不支持的目录表
下表指示在 Aurora DSQL 中支持哪些表和不支持哪些表。
| 名称 | 适用于 Aurora DSQL |
|---|---|
|
|
否 |
|
|
是 |
|
|
否 |
|
|
否 |
|
|
是 |
|
|
是 |
|
|
否(使用 |
|
|
支持 |
|
|
是 |
|
|
是 |
|
|
是 |
|
|
是 |
|
|
否 |
|
|
否 |
|
|
是 |
|
|
是 |
|
|
是 |
|
|
是 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
是 |
|
|
是 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
是 |
|
|
是 |
|
|
否 |
|
|
是 |
|
|
否 |
|
|
是 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
是 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
是 |
|
|
是 |
|
|
否 |
|
|
是 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
是 |
|
|
是 |
|
|
是 |
|
|
是 |
|
|
是 |
|
|
是 |
|
|
否 |
支持和不支持的系统视图
下表指示在 Aurora DSQL 中支持哪些视图和不支持哪些视图。
| 名称 | 适用于 Aurora DSQL |
|---|---|
|
|
否 |
|
|
否 |
|
|
是 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
是 |
|
|
否 |
|
|
否 |
|
|
是 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
是 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
是 |
|
|
是 |
|
|
是 |
|
|
是 |
|
|
否 |
|
|
否 |
|
|
是 |
|
|
是 |
|
|
是 |
|
|
是 |
|
|
否 |
|
|
是 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
是 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
|
|
否 |
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 视图中的各列。
| 列 | 类型 | 说明 |
|---|---|---|
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 |
上次更新作业行的时间戳。 |
| 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 相同,默认情况下会将其应用于用户表。系统表和目录表不包括在此自动化流程中。