

# Aurora DSQL의 시스템 테이블 및 명령
<a name="working-with-systems-tables"></a>

Aurora DSQL에서 지원되는 시스템 테이블 및 카탈로그와 시스템 관련 정보(예: 버전)를 가져오는 데 유용한 쿼리를 알아보려면 다음 섹션을 참조하세요.

## 시스템 테이블
<a name="working-with-system-tables-queries"></a>

Aurora DSQL은 PostgreSQL과 호환되므로 PostgreSQL의 많은 [시스템 카탈로그 테이블](https://www.PostgreSQL.org/docs/current/catalogs-overview.html)과 [뷰](https://www.PostgreSQL.org/docs/current/views.html)가 Aurora DSQL에도 있습니다.

### 중요한 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 상태 값**  

| 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`가 관리자가 아닌 사용자에게 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
```

이 반환 값은 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`와 동일한 유형의 통계를 수집하여 기본적으로 사용자 테이블에 적용합니다. 시스템 및 카탈로그 테이블은 이 자동 프로세스에서 제외됩니다.