

# Aurora DSQL 中的系统表和命令
<a name="working-with-systems-tables"></a>

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

## 系统表
<a name="working-with-system-tables-queries"></a>

Aurora DSQL 与 PostgreSQL 兼容，因此 Aurora DSQL 中还存在许多来自 PostgreSQL 的 [system catalog tables](https://www.PostgreSQL.org/docs/current/catalogs-overview.html) 和 [views](https://www.PostgreSQL.org/docs/current/views.html)。

### 重要的 PostgreSQL 目录表和视图
<a name="dsql-catalog-tables"></a>

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


| 名称 | 描述 | 
| --- | --- | 
|  `pg_namespace`  |  有关所有架构的信息  | 
|  `pg_tables`  |  有关所有表的信息  | 
|  `pg_attribute`  |  有关所有属性的信息  | 
|  `pg_views`  |  有关（预）定义视图的信息  | 
|  `pg_class`  |  描述所有表、列、索引和类似对象  | 
|  `pg_stats`  |  有关计划程序统计数据的视图  | 
|  `pg_user`  |  有关用户的信息  | 
|  `pg_roles`  |  有关用户和组的信息  | 
|  `pg_indexes`  |  列出所有索引  | 
|  `pg_constraint`  |  列出对表的约束  | 

### 支持和不支持的目录表
<a name="dsql-catalog-tables-supported"></a>

下表指示在 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`  |  否  | 

### 支持和不支持的系统视图
<a name="dsql-system-tables-supported"></a>

下表指示在 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 视图
<a name="dsql-sys-jobs"></a>

`sys.jobs` 提供有关异步作业的状态信息。例如，在您[创建异步索引](working-with-create-index-async.md)后，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\$1id | text | 一个 32 位的 UUID，表示作业。 | 
| status | text | 作业的当前状态。可能的值为 submitted、processing、completed 和 failed。有关更多信息，请参阅 [sys.jobs 状态值](#dsql-sys-jobs-status-values)。 | 
| details | text | 有关作业的任何相关详细信息。如果任务失败，则会提供详细原因。 | 
| job\$1type | text | 异步作业的类型。可能的值为：INDEX\$1BUILD – 异步索引构建。ANALYZE – 系统提交的自动分析作业。DROP – 在 DROP TABLE 或 DROP INDEX 操作后移除物理数据。 | 
| class\$1id | oid | 包含该对象的目录表的 OID。 | 
| object\$1id | oid | 对象的 OID。 | 
| object\$1name | text | 对象的完全限定名称。DROP 作业无法引用已经删除的对象。如果已经删除引用的对象，则 object\$1name 可能为 NULL。 | 
| start\$1time | timestamp with time zone | 提交作业的时间戳。 | 
| update\$1time | timestamp with time zone | 上次更新作业行的时间戳。 | 


**sys.jobs 状态值**  

| Status | 说明 | 
| --- | --- | 
| submitted | 任务已提交，但是 Aurora DSQL 尚未开始处理该任务。 | 
| processing | Aurora DSQL 正在处理该任务。 | 
| failed | 任务失败。有关更多信息，请参阅 details 列。 | 
| completed | Aurora DSQL 已成功完成任务。 | 

### sys.iam\$1pg\$1role\$1mappings 视图
<a name="dsql-sys-iam-pg-role-mappings"></a>

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

```
SELECT * FROM sys.iam_pg_role_mappings;
```

## 有用的系统元数据查询
<a name="dsql-useful-system-queries"></a>

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

### 获取表的估计行计数
<a name="dsql-get-row-count"></a>

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

```
SELECT reltuples FROM pg_class WHERE relname = 'table_name';
```

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

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

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

### 获取当前 Aurora DSQL 主要版本
<a name="dsql-get-major-version"></a>

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

```
SELECT * FROM sys.dsql_major_version();
```

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

```
 dsql_major_version
--------------------
                  1
```

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

### 获取当前 PostgreSQL 版本
<a name="dsql-get-pg-version"></a>

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

```
SHOW server_version;
```

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

```
 server_version
----------------
 16.13
```

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

## `ANALYZE` 命令
<a name="working-with-system-tables-analyze"></a>

 `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` 相同，默认情况下会将其应用于用户表。系统表和目录表不包括在此自动化流程中。