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