

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 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 的許多[系統目錄資料表](https://www.PostgreSQL.org/docs/current/catalogs-overview.html)和[檢視](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 檢視資料欄**  

| 資料行 | Type | 說明 | 
| --- | --- | --- | 
| job\$1id | text | 代表任務的 base-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 狀態值**  

| 狀態 | Description | 
| --- | --- | 
| 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` 是授予 Aurora DSQL 非管理員存取權的 IAM 角色，而名為 `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
```

這會傳回 SQL 連線在 Aurora DSQL 中的主要版本。

### 取得目前的 PostgreSQL 版本
<a name="dsql-get-pg-version"></a>

若要取得 Aurora DSQL 叢集的目前 PostgreSQL 版本，請使用下列查詢：

```
SHOW server_version;
```

此命令會傳回類似以下的輸出：

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

這會傳回 SQL 連線在 Aurora DSQL 中的 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` 相同的統計資料類型，並依預設將其套用到使用者資料表。此自動化程序會排除系統和目錄資料表。