システムカタログとは、リレーショナルデータベースの管理システムがテーブルや列の情報などのスキーマメタデータと内部的な情報を格納する場所です。PostgreSQL のシステムカタログは通常のテーブルです。テーブルを削除したり再作成したり、列の追加および値の挿入や更新をすることは可能ですが、これらの操作でデータベースシステムを台無しにしてしまう可能性もあります。通常手作業でシステムカタログを変更してはいけません。その代わりとして SQL コマンドを使用します。(たとえば CREATE DATABASE により pg_database カタログに一行挿入し、ディスク上にデータベースを実際に作成します。)しかしインデックスアクセスメソッドを追加するような特に難易度の高い操作のときなどの例外があります。
表43-1 でシステムカタログをリストしています。以下にシステムカタログのより詳細な説明をします。
ほとんどのシステムカタログはデータベースを作成するときにテンプレートデータベースからコピーされデータベースに固有のものとなります。ごく一部のカタログがデータベースクラスタ内のすべてのデータベースにわたって物理的に共有されます。これらについては、それぞれのカタログの所に記載されています。
表 43-1. システムカタログ
| カタログ名 | 用途 |
|---|---|
| pg_aggregate | 集約関数 |
| pg_am | インデックスアクセスメソッド |
| pg_amop | アクセスメソッド演算子 |
| pg_amproc | アクセスメソッドサポートプロシージャ |
| pg_attrdef | 列デフォルト値 |
| pg_attribute | テーブル列("属性") |
| pg_cast | キャスト(データ型変換) |
| pg_class | テーブル、インデックス、シーケンス("リレーション") |
| pg_constraint | チェック制約、一意性/主キー制約、外部キー制約 |
| pg_conversion | 符号化変換情報 |
| pg_database | このデータベースクラスタにあるデータベース |
| pg_depend | データベースオブジェクト間の依存関係 |
| pg_description | データベースオブジェクトの説明やコメント |
| pg_group | データベースユーザのグループ |
| pg_index | 追加インデックス情報 |
| pg_inherits | テーブル継承階層 |
| pg_language | 関数記述言語 |
| pg_largeobject | ラージオブジェクト |
| pg_listener | 非同期通知サポート |
| pg_namespace | 名前空間(スキーマ) |
| pg_opclass | インデックスアクセスメソッド演算子クラス |
| pg_operator | 演算子 |
| pg_proc | 関数とプロシージャ |
| pg_rewrite | 問い合わせ書き換えルール |
| pg_shadow | データベースユーザ |
| pg_statistic | プランナ統計値 |
| pg_trigger | トリガ |
| pg_type | データ型 |