View a markdown version of this page

Aurora DSQL 的系統資料表和命令 - Amazon Aurora DSQL

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

Aurora DSQL 的系統資料表和命令

請參閱下列各節,以了解 Aurora DSQL 中支援的系統資料表和目錄,以及用於擷取系統相關資訊的實用查詢,例如 版本。

系統表

Aurora DSQL 與 PostgreSQL 相容,因此 Aurora DSQL 也有來自 PostgreSQL 的許多系統目錄資料表和檢視。

重要的 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 檢視資料欄
資料行 Type 說明
job_id text 代表任務的 base-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 狀態值
狀態 說明
submitted 任務已提交,但 Aurora DSQL 尚未開始處理。
processing Aurora DSQL 正在處理任務。
failed 任務失敗。如需詳細資訊,請參閱 details欄。
completed Aurora DSQL 已成功完成任務。

sys.iam_pg_role_mappings 檢視

檢視 sys.iam_pg_role_mappings 提供授予 IAM 使用者的許可相關資訊。例如,如果 DQSLDBConnect 是授予 Aurora DSQL 非管理員存取權的 IAM 角色,而名為 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

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

取得目前的 PostgreSQL 版本

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

SHOW server_version;

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

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

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