

# Aurora PostgreSQL Limitless Database의 함수 및 뷰
<a name="limitless-monitoring-fns-views"></a>

Aurora PostgreSQL Limitless Database에 함수와 뷰가 추가되었습니다. 이는 해당 Aurora PostgreSQL 함수 및 뷰를 기반으로 합니다.

**참고**  
진행 중인 트랜잭션이 있는 경우 일부 통계는 일관되지 않은 결과를 반환할 수 있습니다.

**Topics**
+ [Aurora PostgreSQL Limitless Database 함수](limitless-monitoring-functions.md)
+ [Aurora PostgreSQL Limitless Database 뷰](limitless-monitoring-views.md)

# Aurora PostgreSQL Limitless Database 함수
<a name="limitless-monitoring-functions"></a>

다음 표에는 Aurora PostgreSQL Limitless Database의 새로운 함수가 나와 있습니다.

**참고**  
이 표에 나열된 함수는 `rds_aurora` 스키마에 있습니다. Limitless Database 함수를 사용할 때는 `rds_aurora`.`object_name`.과 같은 정규화된 객체 이름을 포함해야 합니다.


| Aurora PostgreSQL Limitless Database 함수 | 해당 Aurora PostgreSQL 함수 | 
| --- | --- | 
| [limitless\$1backend\$1dsid](#limitless_backend_dsid) | pg\$1backend\$1pid | 
| [limitless\$1cancel\$1session](#limitless_cancel_session) | pg\$1cancel\$1backend | 
| [limitless\$1stat\$1clear\$1snapshot](#limitless_stat_clear_snapshot) | pg\$1stat\$1clear\$1snapshot | 
| [limitless\$1stat\$1database\$1size](#limitless_stat_database_size) | pg\$1database\$1size | 
| [limitless\$1stat\$1get\$1snapshot\$1timestamp](#limitless_stat_get_snapshot_timestamp) | pg\$1stat\$1get\$1snapshot\$1timestamp | 
| [limitless\$1stat\$1prepared\$1xacts](#limitless_stat_prepared_xacts) | pg\$1prepared\$1xacts | 
| [limitless\$1stat\$1relation\$1sizes](#limitless_stat_relation_sizes) | pg\$1indexes\$1size, pg\$1relation\$1size, pg\$1table\$1size, pg\$1total\$1relation\$1size | 
| [limitless\$1stat\$1reset](#limitless_stat_reset) | pg\$1stat\$1reset | 
| [limitless\$1stat\$1statements\$1reset](#limitless_stat_statements_reset) | pg\$1stat\$1statements\$1reset | 
| [limitless\$1stat\$1system\$1waits](#limitless_stat_system_waits) | aurora\$1stat\$1system\$1waits | 
| [limitless\$1terminate\$1session](#limitless_terminate_session) | pg\$1terminate\$1backend | 
| [limitless\$1wait\$1report](#limitless_wait_report) | aurora\$1wait\$1report | 

다음 예시에서는 Aurora PostgreSQL Limitless Database 함수에 대한 세부 정보를 제공합니다. PostgreSQL 함수에 대한 자세한 내용은 PostgreSQL 설명서에서 [Functions and operators](https://www.postgresql.org/docs/15/functions.html)를 참조하세요.

**limitless\$1backend\$1dsid**  
`limitless_backend_dsid` 함수는 현재 세션의 분산 세션 ID를 반환합니다. 분산 세션은 DB 샤드 그룹의 라우터에서 실행되며 DB 샤드 그룹의 샤드 중 하나 이상에서 이루어지는 백엔드 프로세스를 포함합니다.  
다음 예시에서는 `limitless_backend_dsid` 함수를 사용하는 방법을 보여줍니다.  

```
SELECT rds_aurora.limitless_backend_dsid();

limitless_backend_dsid
------------------------
8CACD7B04D0FC2A5
(1 row)
```

**limitless\$1cancel\$1session**  
`limitless_cancel_session` 함수는 `pg_cancel_backend`와 비슷하게 작동하지만 `SIGINT`(중단 신호)를 전송하여 제공된 분산 세션 ID와 관련된 모든 백엔드 프로세스를 취소하려고 합니다.  
입력 파라미터는 다음과 같습니다.  
+ `distributed_session_id`(text) - 취소할 분산 세션의 ID입니다.
출력 파라미터는 다음과 같습니다.  
+ `subcluster_id`(text) - 이 프로세스가 속한 하위 클러스터의 ID입니다.
+ `pid`(text) - 백엔드 프로세스 ID입니다.
+ `success`(boolean) - 취소의 성공 여부입니다.
다음 예시에서는 `limitless_cancel_session` 함수를 사용하는 방법을 보여줍니다.  

```
SELECT * FROM rds_aurora.limitless_cancel_session('940CD5C81E3C796B');

 subcluster_id |  pid  | success
---------------+-------+---------
             1 | 26920 | t
(1 row)
```

**limitless\$1stat\$1clear\$1snapshot**  
`limitless_stat_clear_snapshot` 함수는 모든 노드에서 현재 통계 스냅샷 또는 캐싱된 정보를 삭제합니다.  
다음 예시에서는 `limitless_stat_clear_snapshot` 함수를 사용하는 방법을 보여줍니다.  

```
SELECT rds_aurora.limitless_stat_clear_snapshot();
```

**limitless\$1stat\$1database\$1size**  
`limitless_stat_database_size` 함수는 DB 샤드 그룹의 데이터베이스 크기를 반환합니다.  
입력 파라미터는 다음과 같습니다.  
+ `dbname`(name) - 크기를 가져올 데이터베이스입니다.
출력 파라미터는 다음과 같습니다.  
+ `subcluster_id`(text) - 이 프로세스가 속한 하위 클러스터의 ID입니다.
+ `subcluster_type`(text) - 이 프로세스가 속한 하위 클러스터 유형으로, `router` 또는 `shard`입니다.
+ `db_size` - 이 하위 클러스터의 데이터베이스 크기를 바이트 단위로 표시합니다.
다음 예시에서는 `limitless_stat_database_size` 함수를 사용하는 방법을 보여줍니다.  

```
SELECT * FROM rds_aurora.limitless_stat_database_size('postgres_limitless');

 subcluster_id | subcluster_type | db_size
---------------+-----------------+----------
             1 | router          |  8895919
             2 | router          |  8904111
             3 | shard           | 21929391
             4 | shard           | 21913007
             5 | shard           | 21831087
(5 rows)
```

**limitless\$1stat\$1get\$1snapshot\$1timestamp**  
`limitless_stat_get_snapshot_timestamp` 함수는 현재 통계 스냅샷의 타임스탬프를 반환하거나 통계 스냅샷이 생성되지 않은 경우 `NULL`을 반환합니다. `stats_fetch_consistency`가 `snapshot`으로 설정된 경우 트랜잭션에서 누적 통계에 처음 액세스할 때 스냅샷이 생성됩니다. 모든 노드의 스냅샷 타임스탬프에 대한 통합 뷰를 반환합니다. `subcluster_id` 및 `subcluster_type` 열에는 데이터가 소스 노드가 표시됩니다.  
다음 예시에서는 `limitless_stat_get_snapshot_timestamp` 함수를 사용하는 방법을 보여줍니다.  

```
SELECT * FROM rds_aurora.limitless_stat_get_snapshot_timestamp();

 subcluster_id | subcluster_type | snapshot_timestamp
---------------+-----------------+--------------------
             1 | router          | 
             2 | router          | 
             3 | shard           | 
             4 | shard           | 
             5 | shard           | 
(5 rows)
```

**limitless\$1stat\$1prepared\$1xacts**  
`limitless_stat_prepared_xacts` 함수는 현재 두 단계 커밋을 위해 준비된 모든 노드의 트랜잭션에 대한 정보를 반환합니다. 자세한 내용은 PostgreSQL 설명서에서 [pg\$1prepared\$1xacts](https://www.postgresql.org/docs/current/view-pg-prepared-xacts.html)를 참조하세요.  
다음 예시에서는 `limitless_stat_prepared_xacts` 함수를 사용하는 방법을 보여줍니다.  

```
postgres_limitless=> SELECT * FROM rds_aurora.limitless_stat_prepared_xacts;

 subcluster_id | subcluster_type | transaction_id |             gid              |           prepared            |  owner_id  |    database_id
---------------+-----------------+----------------+------------------------------+-------------------------------+------------+--------------------
 8             | shard           |        5815978 | 7_4599899_postgres_limitless | 2024-09-03 15:51:17.659603+00 | auroraperf | postgres_limitless
 12            | shard           |        4599138 | 7_4599899_postgres_limitless | 2024-09-03 15:51:17.659637+00 | auroraperf | postgres_limitless
(2 rows)
```

**limitless\$1stat\$1relation\$1sizes**  
`limitless_stat_relation_sizes` 함수는 DB 샤드 그룹에 있는 테이블의 다양한 크기를 반환합니다.  
입력 파라미터는 다음과 같습니다.  
+ `relnspname`(name) - 테이블이 포함된 스키마의 이름입니다.
+ `relname`(name) - 테이블의 이름입니다.
출력 파라미터는 다음과 같습니다.  
+ `subcluster_id`(text) - 이 프로세스가 속한 하위 클러스터의 ID입니다.
+ `subcluster_type`(text) - 이 프로세스가 속한 하위 클러스터 유형으로, `router` 또는 `shard`입니다.
+ `main_size` - 이 노드의 기본 데이터 포크 크기를 바이트 단위로 표시합니다.
+ `fsm_size` - 이 노드의 테이블에 대한 여유 공간 맵의 크기를 바이트 단위로 표시합니다.
+ `vm_size` - 이 노드의 테이블에 대한 가시성 맵의 크기를 바이트 단위로 표시합니다.
+ `init_size` - 이 노드에 있는 테이블 초기화의 크기를 바이트 단위로 표시합니다.
+ `toast_size` - 이 포크의 테이블과 연결된 토스트 테이블의 크기를 바이트 단위로 표시합니다.
+ `index_size` - 이 노드의 테이블에 대한 모든 인덱스의 크기를 바이트 단위로 표시합니다.
+ `total_size` - 이 노드에 있는 테이블의 모든 세그먼트의 크기를 바이트 단위로 표시합니다.
다음 예시에서는 `limitless_stat_relation_sizes` 함수를 사용하는 방법을 보여줍니다(일부 열은 생략됨).  

```
SELECT * FROM rds_aurora.limitless_stat_relation_sizes('public','customers');

 subcluster_id | subcluster_type | main_size | fsm_size | vm_size | toast_size | table_size | total_size
---------------+-----------------+-----------+----------+---------+------------+------------+------------
             1 | router          |         0 |        0 |       0 |          0 |          0 |          0
             2 | router          |         0 |        0 |       0 |          0 |          0 |          0
             3 | shard           |   4169728 |  4177920 | 1392640 |    1392640 |   11132928 |   11132928
             4 | shard           |   4169728 |  4177920 | 1392640 |    1392640 |   11132928 |   11132928
             5 | shard           |   3981312 |  4227072 | 1409024 |    1409024 |   11026432 |   11026432
(5 rows)
```

**limitless\$1stat\$1reset**  
`limitless_stat_reset` 함수는 현재 데이터베이스의 모든 통계 카운터를 0으로 재설정합니다. `track_functions`이 활성화되면 `limitless_stat_database`의 `stats_reset` 열에 데이터베이스에 대한 통계가 마지막으로 재설정된 시간이 표시됩니다. 기본적으로 `limitless_stat_reset`은 슈퍼 사용자만 실행할 수 있습니다. `EXECUTE` 권한을 사용하여 다른 사용자에게 권한을 부여할 수 있습니다.  
다음 예시에서는 `limitless_stat_reset` 함수를 사용하는 방법을 보여줍니다.  

```
SELECT tup_inserted, tup_deleted FROM pg_stat_database
WHERE datname = 'postgres_limitless';

 tup_inserted | tup_deleted
--------------+-------------
          896 |           0
(1 row)

SELECT rds_aurora.limitless_stat_reset();

limitless_stat_reset
---------------------
(1 row)

SELECT tup_inserted, tup_deleted FROM pg_stat_database
WHERE datname = 'postgres_limitless';

tup_inserted | tup_deleted
-------------+-------------
           0 |           0
(1 row)
```

**limitless\$1stat\$1statements\$1reset**  
`limitless_stat_statements_reset` 함수는 `limitless_stat_statements`가 지금까지 수집한 지정된 `username`, `dbname`, `distributed_query_id` 및 `queryid` 파라미터에 해당하는 통계를 삭제합니다. 파라미터가 지정되지 않은 경우 각각에 기본값 `""` 또는 `0`(유효하지 않음)이 사용되며 다른 파라미터와 일치하는 통계가 재설정됩니다. 파라미터가 지정되지 않았거나 지정된 모든 파라미터가 `""` 또는 `0`(유효하지 않음)인 경우 함수는 모든 통계를 삭제합니다. `limitless_stat_statements` 뷰의 모든 통계가 삭제되면 함수는 `limitless_stat_statements_info` 뷰의 통계도 재설정합니다.  
입력 파라미터는 다음과 같습니다.  
+ `username`(name) - 문을 쿼리한 사용자입니다.
+ `dbname`(name) - 쿼리가 실행된 데이터베이스입니다.
+ `distributed_query_id`(bigint) - 코디네이터 노드에서 상위 쿼리의 쿼리 ID입니다. 이 열은 상위 쿼리인 경우 `NULL`입니다. 코디네이터 노드는 분산 쿼리 ID를 참가자 노드로 푸시다운합니다. 따라서 참가자 노드의 경우 분산 쿼리 ID와 쿼리 ID의 값이 다릅니다.
+ `queryid`(bigint) - 문의 쿼리 ID입니다.
다음 예시에서는 `limitless_stat_statements_reset` 함수를 사용하여 `limitless_stat_statements`가 수집한 모든 통계를 재설정하는 방법을 보여줍니다.  

```
SELECT rds_aurora.limitless_stat_statements_reset();
```

**limitless\$1stat\$1system\$1waits**  
`limitless_stat_system_waits` 함수는 모든 노드에서 인스턴스의 시스템 전체 대기 활동을 보고하는 `aurora_stat_system_waits`의 대기 이벤트 데이터에 대한 통합 뷰를 반환합니다. `subcluster_id` 및 `subcluster_type` 열에는 데이터가 소스 노드가 표시됩니다.  
다음 예시에서는 `limitless_stat_system_waits` 함수를 사용하는 방법을 보여줍니다.  

```
postgres_limitless=> SELECT *
FROM rds_aurora.limitless_stat_system_waits() lssw, pg_catalog.aurora_stat_wait_event() aswe
WHERE lssw.event_id=aswe.event_id and aswe.event_name='LimitlessTaskScheduler';

 subcluster_id | subcluster_type | type_id | event_id  | waits  |  wait_time   |        event_name
---------------+-----------------+---------+-----------+--------+--------------+------------------------
             1 | router          |      12 | 201326607 | 677068 | 616942216307 | LimitlessTaskScheduler
             2 | router          |      12 | 201326607 | 678586 | 616939897111 | LimitlessTaskScheduler
             3 | shard           |      12 | 201326607 | 756640 | 616965545172 | LimitlessTaskScheduler
             4 | shard           |      12 | 201326607 | 755184 | 616958057620 | LimitlessTaskScheduler
             5 | shard           |      12 | 201326607 | 757522 | 616963183539 | LimitlessTaskScheduler
(5 rows)
```

**limitless\$1terminate\$1session**  
`limitless_terminate_session` 함수는 `pg_terminate_backend`와 비슷하게 작동하지만 `SIGTERM`(종료 신호)를 전송하여 제공된 분산 세션 ID와 관련된 모든 백엔드 프로세스를 종료하려고 합니다.  
입력 파라미터는 다음과 같습니다.  
+ `distributed_session_id`(text) - 종료할 분산 세션의 ID입니다.
출력 파라미터는 다음과 같습니다.  
+ `subcluster_id`(text) - 이 프로세스가 속한 하위 클러스터의 ID입니다.
+ `pid`(text) - 백엔드 프로세스 ID입니다.
+ `success`(boolean) - 프로세스가 성공적으로 종료되었는지를 나타냅니다.
다음 예시에서는 `limitless_terminate_session` 함수를 사용하는 방법을 보여줍니다.  

```
SELECT * FROM rds_aurora.limitless_terminate_session('940CD5C81E3C796B');

 subcluster_id |  pid  | success
---------------+-------+---------
             1 | 26920 | t 
(1 row)
```

**limitless\$1wait\$1report**  
`limitless_wait_report` 함수는 모든 노드에서 일정 기간 동안의 대기 이벤트 활동을 반환합니다. `subcluster_id` 및 `subcluster_type` 열에는 데이터가 소스 노드가 표시됩니다.  
출력 파라미터는 다음과 같습니다.  
+ `subcluster_id`(text) - 이 프로세스가 속한 하위 클러스터의 ID입니다.
+ `subcluster_type`(text) - 이 프로세스가 속한 하위 클러스터 유형으로, `router` 또는 `shard`입니다.
나머지 열은 `aurora_wait_report`의 열과 동일합니다.  
다음 예시에서는 `limitless_wait_report` 함수를 사용하는 방법을 보여줍니다.  

```
postgres_limitless=> select * from rds_aurora.limitless_wait_report();

 subcluster_id | subcluster_type | type_name | event_name | waits | wait_time | ms_per_wait | waits_per_xact | ms_per_xact
---------------+-----------------+-----------+------------+-------+-----------+-------------+--------------- +-------------
             1 | router          | Client    | ClientRead |    57 | 741550.14 |   13009.652 |           0.19 |    2505.237
             5 | shard           | Client    | ClientRead |    54 | 738897.68 |   13683.290 |           0.18 |    2496.276
             4 | shard           | Client    | ClientRead |    54 | 738859.53 |   13682.584 |           0.18 |    2496.147
             2 | router          | Client    | ClientRead |    53 | 719223.64 |   13570.257 |           0.18 |    2429.810
             3 | shard           | Client    | ClientRead |    54 | 461720.40 |    8550.378 |           0.18 |    1559.86
```

# Aurora PostgreSQL Limitless Database 뷰
<a name="limitless-monitoring-views"></a>

다음 표에는 Aurora PostgreSQL Limitless Database의 새 뷰가 나와 있습니다.

**참고**  
이 테이블에 나열된 뷰는 `rds_aurora` 스키마에 있습니다. Limitless Database 뷰를 사용할 때는 `rds_aurora`.`object_name`.과 같은 정규화된 객체 이름을 포함해야 합니다.


| Aurora PostgreSQL Limitless Database 뷰 | 해당 Aurora PostgreSQL 뷰 | 
| --- | --- | 
| [limitless\$1database](#limitless_database) | pg\$1database | 
| [limitless\$1locks](#limitless_locks) | pg\$1locks | 
| [limitless\$1stat\$1activity](#limitless_stat_activity) | pg\$1stat\$1activity | 
| [limitless\$1stat\$1all\$1indexes](#limitless_stat_all_indexes) | pg\$1stat\$1all\$1indexes | 
| [limitless\$1stat\$1all\$1tables](#limitless_stat_all_tables) | pg\$1stat\$1all\$1tables | 
| [limitless\$1stat\$1database](#limitless_stat_database) | pg\$1stat\$1database | 
| [limitless\$1stat\$1progress\$1vacuum](#limitless_stat_progress_vacuum) | pg\$1stat\$1progress\$1vacuum | 
| [limitless\$1stat\$1statements](#limitless_stat_statements) | pg\$1stat\$1statements | 
| [limitless\$1stat\$1subclusters](#limitless_stat_subclusters) | 없음 | 
| [limitless\$1stat\$1statements\$1info](#limitless_stat_statements_info) | pg\$1stat\$1statements\$1info | 
| [limitless\$1statio\$1all\$1indexes](#limitless_statio_all_indexes) | pg\$1statio\$1all\$1indexes | 
| [limitless\$1statio\$1all\$1tables](#limitless_statio_all_tables) | pg\$1statio\$1all\$1tables | 
| [limitless\$1tables](#limitless_tables) | pg\$1tables | 
| [limitless\$1table\$1collocations](#limitless_table_collocations) | 없음 | 
| [limitless\$1table\$1collocation\$1distributions](#limitless_table_collocation_distributions) | 없음 | 

다음 예시에서는 Aurora PostgreSQL Limitless Database 뷰에 대한 세부 정보를 제공합니다. PostgreSQL 뷰에 대한 자세한 내용은 PostgreSQL 설명서에서 [Viewing statistics](https://www.postgresql.org/docs/15/monitoring-stats.html#MONITORING-STATS-VIEWS)을 참조하세요.

**참고**  
일부 통계 뷰는 진행 중인 트랜잭션이 있는 경우 일관되지 않은 결과를 반환할 수 있습니다.

**limitless\$1database**  
이 뷰에는 DB 샤드 그룹에서 사용 가능한 데이터베이스에 대한 정보가 포함되어 있습니다. 예시:  

```
postgres_limitless=> SELECT subcluster_id, subcluster_type, oid, datname, datacl FROM rds_aurora.limitless_database;

 subcluster_id | subcluster_type |  oid  |      datname       |                                                         datacl                                                         
---------------+-----------------+-------+--------------------+------------------------------------------------------------------------------------------------------------------------
 2             | router          |     4 | template0          | {=c/rdsadmin,rdsadmin=CTc/rdsadmin}
 2             | router          |     5 | postgres           | 
 2             | router          | 16384 | rdsadmin           | {rdsadmin=CTc/rdsadmin,rds_aurora_limitless_metadata_admin=c/rdsadmin,rds_aurora_limitless_heat_mgmt_admin=c/rdsadmin}
 2             | router          | 16477 | postgres_limitless | 
 2             | router          |     1 | template1          | {=c/rdsadmin,rdsadmin=CTc/rdsadmin}
 6             | shard           |     4 | template0          | {=c/rdsadmin,rdsadmin=CTc/rdsadmin}
```
출력 파라미터는 다음과 같습니다.  
+ `subcluster_id`(텍스트) - 하위 클러스터의 ID(노드)
+ `subcluster_type`(텍스트) - 하위 클러스터(노드), 라우터 또는 샤드의 유형
나머지 열은 `pg_database`의 열과 동일합니다.

**limitless\$1locks**  
이 뷰에는 노드마다 프로세스당 행이 하나씩 포함됩니다. 데이터베이스 서버의 활성 프로세스가 보유한 잠금 정보에 대한 액세스를 제공합니다.  

**Example 두 트랜잭션으로 잠금 만들기**  
이 예시에서는 두 라우터에서 두 트랜잭션을 동시에 실행합니다.  

```
# Transaction 1 (run on router 1)
BEGIN;
SET search_path = public;
SELECT * FROM customers;
INSERT INTO customers VALUES (400,'foo','bar');

# Transaction 2 (run on router 2)
BEGIN;
SET search_path = public;
ALTER TABLE customers ADD COLUMN phone VARCHAR;
```
첫 번째 트랜잭션이 실행됩니다. 후속 트랜잭션은 첫 번째 트랜잭션이 완료될 때까지 기다려야 합니다. 따라서 두 번째 트랜잭션은 잠금으로 차단됩니다. 근본 원인을 확인하기 위해 `limitless_locks`을 `limitless_stat_activity`와 조인하여 명령을 실행합니다.  

```
# Run on router 2
SELECT distributed_session_id, state, usename, query, query_start
FROM rds_aurora.limitless_stat_activity
WHERE distributed_session_id in (
SELECT distributed_session_id
FROM rds_aurora.limitless_locks
WHERE relname = 'customers'
);

 distributed_session_id | state               | usename                 | query                                           | query_start
------------------------+---------------------+--------------------------+---------------------------------- -------------+-------------------------------
 47BDE66E9A5E8477       | idle in transaction | limitless_metadata_admin | INSERT INTO customers VALUES (400,'foo','bar'); | 2023-04-13 17:44:45.152244+00
 2AD7F370202D0FA9       | active              | limitless_metadata_admin | ALTER TABLE customers ADD COLUMN phone VARCHAR; | 2023-04-13 17:44:55.113388+00
 47BDE66E9A5E8477       |                     | limitless_auth_admin     | <insufficient privilege>                        |
 2AD7F370202D0FA9       |                     | limitless_auth_admin     | <insufficient privilege>                        |
 47BDE66E9A5E8477       |                     | limitless_auth_admin     | <insufficient privilege>                        |
 2AD7F370202D0FA9       |                     | limitless_auth_admin     | <insufficient privilege>                        |
(6 rows)
```

**Example 잠금을 명시적으로 만들기**  
이 예시에서는 잠금을 명시적으로 만든 다음 `limitless_locks` 뷰를 사용하여 잠금을 확인합니다(일부 열은 생략됨).  

```
BEGIN;
SET search_path = public;
LOCK TABLE customers IN ACCESS SHARE MODE;
SELECT * FROM rds_aurora.limitless_locks WHERE relname = 'customers';

 subcluster_id | subcluster_type | distributed_session_id | locktype |      datname       | relnspname |  relname  | virtualtransaction |  pid  |      mode
---------------+-----------------+------------------------+----------+--------------------+------------+ ----------+--------------------+-------+-----------------
             1 | router          | 7207702F862FC937       | relation | postgres_limitless | public     | customers | 28/600787          | 59564 | AccessShareLock
             2 | router          | 7207702F862FC937       | relation | postgres_limitless | public     | customers | 28/600405          | 67130 | AccessShareLock
             3 | shard           | 7207702F862FC937       | relation | postgres_limitless | public     | customers | 15/473401          | 27735 | AccessShareLock
             4 | shard           | 7207702F862FC937       | relation | postgres_limitless | public     | customers | 13/473524          | 27734 | AccessShareLock
             5 | shard           | 7207702F862FC937       | relation | postgres_limitless | public     | customers | 13/472935          | 27737 | AccessShareLock
             6 | shard           | 7207702F862FC937       | relation | postgres_limitless | public     | customers | 13/473015          | 48660 | AccessShareLock
(6 rows)
```

**limitless\$1stat\$1activity**  
이 뷰에는 노드마다 프로세스당 행이 하나씩 포함됩니다. 이는 전체 시스템 상태를 추적하고 시간이 오래 걸리는 프로세스를 분류하는 데 사용할 수 있습니다. 예시:  

```
postgres=# SELECT
    subcluster_id,
    subcluster_type,
    distributed_session_id,
    distributed_session_state,
    datname,
    distributed_query_id,
    is_sso_query
FROM
    rds_aurora.limitless_stat_activity
WHERE
    distributed_session_id in ('D2470C97E3D07E06', '5A3CD7B8E5FD13FF') 
    order by  distributed_session_id;

 subcluster_id | subcluster_type | distributed_session_id | distributed_session_state |      datname       | distributed_query_id | is_sso_query
---------------+-----------------+------------------------+---------------------------+--------------------+----------------------+--------------
 2             | router          | 5A3CD7B8E5FD13FF       | coordinator               | postgres_limitless |                      | f
 3             | shard           | 5A3CD7B8E5FD13FF       | participant               | postgres_limitless |  6808291725541680947 |
 4             | shard           | 5A3CD7B8E5FD13FF       | participant               | postgres_limitless |  6808291725541680947 |
 2             | router          | D2470C97E3D07E06       | coordinator               | postgres_limitless |                      | t
 3             | shard           | D2470C97E3D07E06       | participant               | postgres_limitless |  4058400544464210222 |
(5 rows)
```
<a name="HOutput"></a>출력 파라미터는 다음과 같습니다.  
+ `subcluster_id`(text) - 이 프로세스가 속한 하위 클러스터의 ID입니다.
+ `subcluster_type`(text) - 이 프로세스가 속한 하위 클러스터 유형으로, `router` 또는 `shard`입니다.
+ `distributed_session_id`(text) - 이 프로세스가 속한 분산 세션의 ID입니다.
+ `distributed_session_state`(text) - 코디네이터, 참가자 또는 독립 실행형/미분산 프로세스(`NULL`로 표시됨) 중 무엇인지를 나타냅니다.
+ `datname`(text) - 이 프로세스가 연결된 데이터베이스입니다.
+ `distributed_query_id`(bigint) - 코디네이터 노드에서 상위 쿼리의 쿼리 ID입니다. 이 열은 상위 쿼리인 경우 `NULL`입니다. 코디네이터 노드는 분산 쿼리 ID를 참가자 노드로 푸시다운합니다. 따라서 참가자 노드의 경우 분산 쿼리 ID와 쿼리 ID의 값이 다릅니다.
+ `is_sso_query`(text) - 쿼리가 단일 샤드에 최적화되었는지, 아닌지를 알려줍니다.
나머지 열은 `pg_stat_activity`의 열과 동일합니다.

**limitless\$1stat\$1all\$1indexes**  
이 뷰에는 DB 샤드 그룹의 인덱스에 대한 사용량 통계가 포함되어 있습니다. 예시:  

```
postgres_limitless=> SELECT schemaname, relname, indexrelname, idx_scan
  FROM rds_aurora.limitless_stat_all_indexes
  WHERE relname LIKE 'orders_ts%' ORDER BY indexrelname LIMIT 10;

 schemaname |    relname     |    indexrelname     | idx_scan
------------+----------------+---------------------+----------
 ec_sample  | orders_ts00001 | orders_ts00001_pkey |   196801
 ec_sample  | orders_ts00002 | orders_ts00002_pkey |   196703
 ec_sample  | orders_ts00003 | orders_ts00003_pkey |   196376
 ec_sample  | orders_ts00004 | orders_ts00004_pkey |   197966
 ec_sample  | orders_ts00005 | orders_ts00005_pkey |   195301
 ec_sample  | orders_ts00006 | orders_ts00006_pkey |   195673
 ec_sample  | orders_ts00007 | orders_ts00007_pkey |   194475
 ec_sample  | orders_ts00008 | orders_ts00008_pkey |   191694
 ec_sample  | orders_ts00009 | orders_ts00009_pkey |   193744
 ec_sample  | orders_ts00010 | orders_ts00010_pkey |   195421
(10 rows)
```

**limitless\$1stat\$1all\$1tables**  
이 뷰에는 DB 샤드 그룹의 현재 데이터베이스에 있는 모든 테이블에 대한 통계가 포함되어 있습니다. 이는 vacuum 작업 및 데이터 조작 언어(DML) 작업을 추적할 때 유용합니다. 예시:  

```
postgres_limitless=> SELECT subcluster_id, subcluster_type, relname, n_ins_since_vacuum, n_tup_ins, last_vacuum
  FROM rds_aurora.limitless_stat_all_tables
  WHERE relname LIKE 'orders_ts%' ORDER BY relname LIMIT 10;

 subcluster_id | subcluster_type |    relname     | n_ins_since_vacuum | n_tup_ins | last_vacuum
---------------+-----------------+----------------+--------------------+-----------+-------------
 5             | shard           | orders_ts00001 |              34779 |    196083 |
 5             | shard           | orders_ts00002 |              34632 |    194721 |
 5             | shard           | orders_ts00003 |              34950 |    195965 |
 5             | shard           | orders_ts00004 |              34745 |    197283 |
 5             | shard           | orders_ts00005 |              34879 |    195754 |
 5             | shard           | orders_ts00006 |              34340 |    194605 |
 5             | shard           | orders_ts00007 |              33779 |    192203 |
 5             | shard           | orders_ts00008 |              33826 |    191293 |
 5             | shard           | orders_ts00009 |              34660 |    194117 |
 5             | shard           | orders_ts00010 |              34569 |    195560 |
(10 rows)
```
출력 파라미터는 다음과 같습니다.  
+ `subcluster_id`(text) - 이 프로세스가 속한 하위 클러스터의 ID입니다.
+ `subcluster_type`(text) - 이 프로세스가 속한 하위 클러스터 유형으로, `router` 또는 `shard`입니다.
+ `relname`(name) - 테이블의 이름입니다.
나머지 열은 `pg_stat_all_tables`의 열과 동일합니다.

**limitless\$1stat\$1database**  
이 뷰에는 DB 샤드 그룹의 모든 데이터베이스에 대한 통계가 포함되어 있습니다. 노드마다 데이터베이스당 행 하나를 반환합니다. 예시:  

```
postgres_limitless=> SELECT
    subcluster_id,
    subcluster_type,
    datname,
    blks_read,
    blks_hit
FROM
    rds_aurora.limitless_stat_database
WHERE
    datname='postgres_limitless';
 subcluster_id | subcluster_type |      datname       | blks_read | blks_hit
---------------+-----------------+--------------------+-----------+----------
             1 | router          | postgres_limitless |       484 | 34371314
             2 | router          | postgres_limitless |       673 | 33859317
             3 | shard           | postgres_limitless |      1299 | 17749550
             4 | shard           | postgres_limitless |      1094 | 17492849
             5 | shard           | postgres_limitless |      1036 | 17485098
             6 | shard           | postgres_limitless |      1040 | 17437257
(6 rows)
```
출력 파라미터는 다음과 같습니다.  
+ `subcluster_id`(text) - 이 프로세스가 속한 하위 클러스터의 ID입니다.
+ `subcluster_type`(text) - 이 프로세스가 속한 하위 클러스터 유형으로, `router` 또는 `shard`입니다.
+ `datname`(name) - 데이터베이스의 이름입니다.
나머지 열은 `pg_stat_database`의 열과 동일합니다.

**limitless\$1stat\$1progress\$1vacuum**  
이 뷰에는 지속적 vacuum 작업에 대한 정보가 포함되어 있습니다. 예시:  

```
postgres_limitless=> SELECT * FROM rds_aurora.limitless_stat_progress_vacuum;

-[ RECORD 1 ]----------+------------------
subcluster_id          | 3
subcluster_type        | shard
distributed_session_id | A56D96E2A5C9F426
pid                    | 5270
datname                | postgres
nspname                | public
relname                | customer_ts2
phase                  | vacuuming heap
heap_blks_total        | 130500
heap_blks_scanned      | 100036
heap_blks_vacuumed     | 0
index_vacuum_count     | 0
max_dead_tuples        | 11184810
num_dead_tuples        | 0

-[ RECORD 2 ]----------+------------------
subcluster_id          | 3
subcluster_type        | shard
distributed_session_id | 56DF26A89EC23AB5
pid                    | 6854
datname                | postgres
nspname                | public
relname                | sales_ts1
phase                  | vacuuming heap
heap_blks_total        | 43058
heap_blks_scanned      | 24868
heap_blks_vacuumed     | 0
index_vacuum_count     | 0
max_dead_tuples        | 8569523
num_dead_tuples        | 0
```
출력 파라미터는 다음과 같습니다.  
+ `subcluster_id`(text) - 이 프로세스가 속한 하위 클러스터의 ID입니다.
+ `subcluster_type`(text) - 이 프로세스가 속한 하위 클러스터 유형으로, `router` 또는 `shard`입니다.
+ `distributed_session_id`(text) - Vacuum 작업을 시작한 세션의 식별자입니다.
+ `datname`(name) - Vacuum이 수행되는 데이터베이스입니다.
+ `nspname`(name) - Vacuum이 진행 중인 테이블의 스키마 이름입니다. Vacuum이 진행 중인 테이블이 사용자가 연결된 테이블과 동일한 데이터베이스에 있지 않은 경우 `null`입니다.
+ `relname`(name) - Vacuum이 진행 중인 테이블의 이름입니다. Vacuum이 진행 중인 테이블이 사용자가 연결된 테이블과 동일한 데이터베이스에 있지 않은 경우 `null`입니다.
나머지 열은 `pg_stat_progress_vacuum`의 열과 동일합니다.

**limitless\$1stat\$1statements**  
이 뷰는 모든 노드에서 실행되는 모든 SQL 문에 대한 계획 및 실행 통계를 추적하는 수단을 제공합니다.  
`limitless_stat_statements` 뷰를 사용하려면 [pg\$1stat\$1statements](https://www.postgresql.org/docs/current/pgstatstatements.html) 확장을 설치해야 합니다.  

```
-- CREATE EXTENSION must be run by a superuser
CREATE EXTENSION pg_stat_statements;

-- Verify that the extension is created on all nodes in the DB shard group
SELECT distinct node_id
    FROM rds_aurora.limitless_stat_statements
    LIMIT 10;
```
다음 예시는 `limitless_stat_statements` 뷰 사용을 보여 줍니다.  

```
postgres_limitless=> SELECT
 subcluster_id,
 subcluster_type,
 distributedqueryid,
 username,
 dbname,
 sso_calls
FROM
 rds_aurora.limitless_stat_statements;

 subcluster_id | subcluster_type |  distributedqueryid  |              username               |       dbname       | sso_calls
---------------+-----------------+----------------------+-------------------------------------+--------------------+-----------
 2             | router          |                      | postgres                            | postgres_limitless |         0
 2             | router          |                      | postgres                            | postgres_limitless |         0
 2             | router          |                      | postgres                            | postgres_limitless |         0
 2             | router          |                      | postgres                            | postgres_limitless |         0
 2             | router          |                      | postgres                            | postgres_limitless |         0
 2             | router          |                      | postgres                            | postgres_limitless |         1
 3             | shard           | -7975178695405682176 | postgres                            | postgres_limitless |
[...]
```
출력 파라미터는 다음과 같습니다.  
+ `subcluster_id`(text) - 이 프로세스가 속한 하위 클러스터의 ID입니다.
+ `subcluster_type`(text) - 이 프로세스가 속한 하위 클러스터 유형으로, `router` 또는 `shard`입니다.
+ `distributedqueryid`(bigint) - 코디네이터 노드에서 상위 쿼리의 쿼리 ID입니다. 이 열은 상위 쿼리인 경우 `NULL`입니다. 코디네이터 노드는 분산 쿼리 ID를 참가자 노드로 푸시다운합니다. 따라서 참가자 노드의 경우 분산 쿼리 ID와 쿼리 ID의 값이 다릅니다.
+ `username`(name) - 문을 쿼리한 사용자입니다.
+ `dbname`(name) - 쿼리가 실행된 데이터베이스입니다.
+ `sso_calls`(name) - 문이 단일 샤드에 최적화된 횟수입니다.
나머지 열은 [pg\$1stat\$1statements](https://www.postgresql.org/docs/current/pgstatstatements.html)와 동일합니다.

**limitless\$1stat\$1statements\$1info**  
이 뷰에는 `limitless_stat_statements` 뷰에 대한 통계가 포함되어 있습니다. 각 행에는 각 노드의 [pg\$1stat\$1statements\$1info](https://www.postgresql.org/docs/current/pgstatstatements.html#id-1.11.7.41.7) 뷰에 대한 데이터가 포함되어 있습니다. `subcluster_id` 열은 각 노드를 식별합니다.  

```
postgres_limitless=> SELECT * FROM rds_aurora.limitless_stat_statements_info;

 subcluster_id | subcluster_type | dealloc |          stats_reset
---------------+-----------------+---------+-------------------------------
             1 | router          |       0 | 2023-06-30 21:22:09.524781+00
             2 | router          |       0 | 2023-06-30 21:21:40.834111+00
             3 | shard           |       0 | 2023-06-30 21:22:10.709942+00
             4 | shard           |       0 | 2023-06-30 21:22:10.740179+00
             5 | shard           |       0 | 2023-06-30 21:22:10.774282+00
             6 | shard           |       0 | 2023-06-30 21:22:10.808267+00
(6 rows)
```
출력 파라미터는 다음과 같습니다.  
+ `subcluster_id`(text) - 이 프로세스가 속한 하위 클러스터의 ID입니다.
나머지 열은 [pg\$1stat\$1statements\$1info](https://www.postgresql.org/docs/current/pgstatstatements.html#id-1.11.7.41.7)와 동일합니다.

**limitless\$1stat\$1subclusters**  
이 뷰에는 라우터와 다른 노드 간의 네트워크 통계가 포함되어 있습니다. 여기에는 라우터 및 기타 노드 페어당 행이 포함됩니다. 예를 들면 다음과 같습니다.  

```
postgres_limitless=> SELECT * FROM rds_aurora.limitless_stat_subclusters;

 orig_subcluster | orig_instance_az | dest_subcluster | dest_instance_az | latency_us |       latest_collection       | failed_requests | received_bytes | sent_bytes | same_az_requests | cross_az_requests |     stat_reset_timestamp      
-----------------+------------------+-----------------+------------------+------------+-------------------------------+-----------------+----------------+------------+------------------+-------------------+-------------------------------
 3               | us-west-2b       | 2               | us-west-2a       |        847 | 2024-10-07 17:25:39.518617+00 |               0 |       35668633 |   92090171 |                0 |            302787 | 2024-10-05 12:39:55.239675+00
 3               | us-west-2b       | 4               | us-west-2b       |        419 | 2024-10-07 17:25:39.546376+00 |               0 |      101190464 |  248795719 |           883478 |                 0 | 2024-10-05 12:39:55.231218+00
 3               | us-west-2b       | 5               | us-west-2c       |       1396 | 2024-10-07 17:25:39.52122+00  |               0 |       72864849 |  172086292 |                0 |            557726 | 2024-10-05 12:39:55.196412+00
 3               | us-west-2b       | 6               | us-west-2c       |        729 | 2024-10-07 17:25:39.54828+00  |               0 |       35668584 |   92090171 |                0 |            302787 | 2024-10-05 12:39:55.247334+00
 3               | us-west-2b       | 7               | us-west-2a       |       1702 | 2024-10-07 17:25:39.545307+00 |               0 |       71699576 |  171634844 |                0 |            556278 | 2024-10-05 12:39:52.715168+00
 2               | us-west-2a       | 3               | us-west-2b       |        868 | 2024-10-07 17:25:40.293927+00 |               0 |       35659611 |   92011872 |                0 |            302817 | 2024-10-05 12:39:54.420758+00
 2               | us-west-2a       | 4               | us-west-2b       |        786 | 2024-10-07 17:25:40.296863+00 |               0 |      102437253 |  251838024 |                0 |            895060 | 2024-10-05 12:39:54.404081+00
 2               | us-west-2a       | 5               | us-west-2c       |       1232 | 2024-10-07 17:25:40.292021+00 |               0 |       71990027 |  168828110 |                0 |            545453 | 2024-10-05 12:39:36.769549+00
```
출력 파라미터는 다음과 같습니다.  
+ `orig_subcluster`(text) - 통신이 시작되는 라우터의 ID입니다.
+ `orig_subcluster_az`(text) - 발신자 라우터의 가용 영역(AZ)입니다.
+ `dest_subcluster`(text) - 대상 노드의 ID입니다.
+ `dest_subcluster_az`(text) - 대상 노드의 마지막으로 수집된 AZ입니다.
+ `latency_us`(bigint) - 노드 간에 마지막으로 수집된 네트워크 지연 시간으로, 마이크로초 단위입니다. 노드에 연결할 수 없는 경우 값은 `0`입니다.
+ `latest_collection`(timestamp) - 대상 노드의 최신 AZ 및 지연 시간 모음의 타임스탬프입니다.
+ `failed_requests`(bigint) - 실패한 내부 요청의 누적 수입니다.
+ `received_bytes`(bigint) - 이 노드에서 수신된 예상 누적 바이트 수입니다.
+ `sent_bytes`(bigint) - 이 노드로 전송된 예상 누적 바이트 수입니다.
+ `same_az_requests`(bigint) - 이 노드가 발신자 라우터와 동일한 AZ에 있는 경우 이 노드에 대한 내부 DB 요청의 누적 수입니다.
+ `cross_az_requests`(bigint) - 이 노드가 발신자 라우터와 다른 AZ에 있을 때 이 노드에 대한 내부 DB 요청의 누적 수입니다.
+ `stat_reset_timestamp`(timestamp) - 이 뷰의 누적 통계가 마지막으로 재설정된 시점의 타임스탬프입니다.

**limitless\$1statio\$1all\$1indexes**  
이 뷰에는 DB 샤드 그룹의 모든 인덱스에 대한 입출력(I/O) 통계가 포함되어 있습니다. 예시:  

```
postgres_limitless=> SELECT * FROM rds_aurora.limitless_statio_all_indexes WHERE relname like'customers_ts%';

 subcluster_id | subcluster_type | schemaname |      relname      |            indexrelname             | idx_blks_read | idx_blks_hit
---------------+-----------------+------------+-------------------+-------------------------------------+ --------------+--------------
             3 | shard           | public     | customers_ts00002 | customers_ts00002_customer_name_idx |             1 |            0
             3 | shard           | public     | customers_ts00001 | customers_ts00001_customer_name_idx |             1 |            0
             4 | shard           | public     | customers_ts00003 | customers_ts00003_customer_name_idx |             1 |            0
             4 | shard           | public     | customers_ts00004 | customers_ts00004_customer_name_idx |             1 |            0
             5 | shard           | public     | customers_ts00005 | customers_ts00005_customer_name_idx |             1 |            0
             5 | shard           | public     | customers_ts00006 | customers_ts00006_customer_name_idx |             1 |            0
             6 | shard           | public     | customers_ts00007 | customers_ts00007_customer_name_idx |             1 |            0
             6 | shard           | public     | customers_ts00008 | customers_ts00008_customer_name_idx |             1 |            0
(8 rows)
```

**limitless\$1statio\$1all\$1tables**  
이 뷰에는 DB 샤드 그룹의 모든 테이블에 대한 입출력(I/O) 통계가 포함되어 있습니다. 예시:  

```
postgres_limitless=> SELECT
    subcluster_id,
    subcluster_type,
    schemaname,
    relname,
    heap_blks_read,
    heap_blks_hit
FROM
    rds_aurora.limitless_statio_all_tables
WHERE
    relname LIKE 'customers_ts%';

 subcluster_id | subcluster_type | schemaname |      relname      | heap_blks_read | heap_blks_hit
---------------+-----------------+------------+-------------------+----------------+---------------
             3 | shard           | public     | customers_ts00002 |            305 |         57780
             3 | shard           | public     | customers_ts00001 |            300 |         56972
             4 | shard           | public     | customers_ts00004 |            302 |         57291
             4 | shard           | public     | customers_ts00003 |            302 |         57178
             5 | shard           | public     | customers_ts00006 |            300 |         56932
             5 | shard           | public     | customers_ts00005 |            302 |         57386
             6 | shard           | public     | customers_ts00008 |            300 |         56881
             6 | shard           | public     | customers_ts00007 |            304 |         57635
(8 rows)
```

**limitless\$1tables**  
이 뷰에는 Aurora PostgreSQL Limitless Database의 테이블에 대한 정보가 포함되어 있습니다.  

```
postgres_limitless=> SELECT * FROM rds_aurora.limitless_tables;

 table_gid | local_oid | schema_name | table_name  | table_status | table_type  | distribution_key 
-----------+-----------+-------------+-------------+--------------+-------------+------------------
         5 |     18635 | public      | placeholder | active       | placeholder | 
         6 |     18641 | public      | ref         | active       | reference   | 
         7 |     18797 | public      | orders      | active       | sharded     | HASH (order_id)
         2 |     18579 | public      | customer    | active       | sharded     | HASH (cust_id)
(4 rows)
```

**limitless\$1table\$1collocations**  
이 뷰에는 공동 배치된 샤딩된 테이블에 대한 정보가 포함되어 있습니다.  
다음 예시에서는 `orders` 및 `customers` 테이블이 공동 배치되고 `users` 및 `followers` 테이블이 공동 배치됩니다. 공동 배치된 테이블은 `collocation_id`가 같습니다.  

```
postgres_limitless=> SELECT * FROM rds_aurora.limitless_table_collocations ORDER BY collocation_id;

 collocation_id | schema_name | table_name 
----------------+-------------+------------
              2 | public      | orders
              2 | public      | customers
              5 | public      | users
              5 | public      | followers
(4 rows)
```

**limitless\$1table\$1collocation\$1distributions**  
이 뷰는 각 공동 배치의 키 분배를 보여줍니다.  

```
postgres_limitless=> SELECT * FROM rds_aurora.limitless_table_collocation_distributions ORDER BY collocation_id, lower_bound;

 collocation_id | subcluster_id |     lower_bound      |     upper_bound      
----------------+---------------+----------------------+----------------------
              2 |             6 | -9223372036854775808 | -4611686018427387904
              2 |             5 | -4611686018427387904 |                    0
              2 |             4 |                    0 |  4611686018427387904
              2 |             3 |  4611686018427387904 |  9223372036854775807
              5 |             6 | -9223372036854775808 | -4611686018427387904
              5 |             5 | -4611686018427387904 |                    0
              5 |             4 |                    0 |  4611686018427387904
              5 |             3 |  4611686018427387904 |  9223372036854775807
(8 rows)
```