

# 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 ビューの列**  

| 列 | 型 | 説明 | 
| --- | --- | --- | 
| 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 ステータスの値**  

| ステータス | 説明 | 
| --- | --- | 
| 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` で収集するタイプの統計と同じものを収集し、デフォルトでユーザーテーブルに適用します。システムテーブルとカタログテーブルは、この自動プロセスから除外されます。