

# 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 シャードグループの 1 つ以上のシャードでバックエンドプロセスが関与します。  
以下の例は、`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` (テキスト) – キャンセルする分散セッションの ID。
出力パラメータは次のとおりです。  
+ `subcluster_id` (テキスト) – このプロセスが属するサブクラスターの ID。
+ `pid` (テキスト) – バックエンドプロセス ID。
+ `success` (ブール値) — キャンセルが成功したかどうか。
以下の例は、`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` (名前) – サイズを取得するデータベース。
出力パラメータは次のとおりです。  
+ `subcluster_id` (テキスト) – このプロセスが属するサブクラスターの ID。
+ `subcluster_type` (テキスト) – このプロセスが属するサブクラスターのタイプ: `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` 関数は、現在 2 フェーズコミット用に準備されているすべてのノードのトランザクションに関する情報を返します。詳細については、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` (名前) – テーブルを含むスキーマの名前。
+ `relname` (名前) – テーブルの名前。
出力パラメータは次のとおりです。  
+ `subcluster_id` (テキスト) – このプロセスが属するサブクラスターの ID。
+ `subcluster_type` (テキスト) – このプロセスが属するサブクラスターのタイプ: `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` 関数は、指定された `username`、`dbname`、`distributed_query_id`、`queryid` パラメータに対応する、`limitless_stat_statements` によってこれまで収集された統計を破棄します。パラメータのいずれかが指定されていない場合、デフォルト値 `""` または `0` (無効) が各パラメータに使用され、他のパラメータと一致する統計がリセットされます。パラメータが指定されていない場合、または指定されたすべてのパラメータが `""` または `0` (無効) である場合、関数はすべての統計を破棄します。`limitless_stat_statements` ビュー内のすべての統計が破棄された場合、関数は `limitless_stat_statements_info` ビューの統計もリセットします。  
入力パラメータは次のとおりです。  
+ `username` (名前) – ステートメントをクエリしたユーザー。
+ `dbname` (名前) – クエリを実行したデータベース。
+ `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` (テキスト) — 終了する分散セッションの ID。
出力パラメータは次のとおりです。  
+ `subcluster_id` (テキスト) – このプロセスが属するサブクラスターの ID。
+ `pid` (テキスト) – バックエンドプロセス ID。
+ `success` (ブール値) – プロセスが正常に終了したかどうか。
以下の例は、`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` (テキスト) – このプロセスが属するサブクラスターの ID。
+ `subcluster_type` (テキスト) – このプロセスが属するサブクラスターのタイプ: `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
```