pg_class
pg_class
カタログはテーブルと、その他に列を持つもの、あるいはテーブルに似た全てのものを目録にしています。
その中にはインデックス(pg_index
も参照)、シーケンス(pg_sequence
も参照)、ビュー、マテリアライズドビュー、複合型およびTOASTテーブルが含まれます。
relkind
を参照してください。
これより以降、「リレーション」と記されている場合はこれらすべてのオブジェクトを意味しています。
すべての列が全てのリレーションの型に該当するとは限りません。
表51.11 pg_class
の列
名前 | 型 | 参照先 | 説明 |
---|---|---|---|
oid | oid | 行識別子(隠し属性です。明示的に選択しなければなりません) | |
relname | name | テーブル、インデックス、ビューなどの名前 | |
relnamespace | oid |
| このリレーションを持つ名前空間のOID |
reltype | oid |
| もし何らかの(pg_type 項目を持たないインデックスではゼロ)が存在した場合このテーブルの行の型に対応するデータ型のOID
|
reloftype | oid |
| 型付けされたテーブルでは背後にある複合型のOID。 その他のリレーションではゼロ。 |
relowner | oid |
| リレーションの所有者 |
relam | oid |
| これがインデックスの場合は、それに使われている(B-tree、ハッシュなどの)アクセスメソッド |
relfilenode | oid | このリレーションのディスク上のファイルの名前です。 ゼロはディスク上のファイル名が低レベルな状態で決定される「マップ付けされた」リレーションであることを意味します。 | |
reltablespace | oid |
| このリレーションが保存されているテーブル空間。 もしゼロならば、このデータベースのデフォルトテーブル空間を意味します。 (リレーションがディスク上のファイルになくても、問題はありません。) |
relpages | int4 | このテーブルのディスク上におけるページ単位(BLCKSZ )の表現サイズ。
これはプランナで使用される単なる推測値です。
VACUUM 、ANALYZE およびCREATE INDEX コマンドなどの一部のDDLコマンドで更新されます。
| |
reltuples | float4 | テーブル内の行数。
これはプランナで使用される単なる推測値です。
VACUUM 、ANALYZE 、CREATE INDEX などの一部のDDLコマンドで更新されます。
| |
relallvisible | int4 | テーブル内の可視マップ内で全て可視とマークされているページ数。
これはプランナで使用される単なる見積です。
これはVACUUM 、ANALYZE さらにCREATE INDEX といったいくつかのDDLコマンドで更新されます。
| |
reltoastrelid | oid |
| このテーブルに関連しているTOASTテーブルのOID。 何もない場合はゼロです。 TOASTテーブルは「行に収まらない」大きい属性を副テーブルに格納します。 |
relhasindex | bool | テーブルであり、かつ、インデックスを持つ(あるいはつい最近まで持っていた)時は真。 | |
relisshared | bool | クラスタ内の全てのデータベースにわたってこのテーブルが共有されている場合は真。
(pg_database のような)ある特定のシステムカタログのみ共有されます。
| |
relpersistence | char | p は永続テーブル、u はログを取らないテーブル、t は一時テーブルを表します。
| |
relkind | char | r は通常のテーブル、i はインデックス、S はシーケンス、t はTOASTテーブル、v はビュー、m はマテリアライズドビュー、c は複合型、f は外部テーブル、p はパーティションテーブルを表します。
| |
relnatts | int2 | リレーションにあるユーザ列数(システム列は含みません)。
pg_attribute にこれに対応する数多くの項目があるはずです。
pg_attribute.attnum も参照してください。
| |
relchecks | int2 | テーブル上のCHECK 制約の数。
pg_constraint カタログを参照してください。
| |
relhasoids | bool | リレーションの行毎にOIDを生成する場合は真。 | |
relhaspkey | bool | テーブルに主キーが含まれている(あるいは過去含まれていた)場合に真。 | |
relhasrules | bool | もしテーブルにルールがある(あるいは以前あった)場合に真。
pg_rewrite カタログを参照してください。
| |
relhastriggers | bool | もしテーブルにトリガがある(あるいは以前あった)場合に真。
pg_trigger カタログを参照してください。
| |
relhassubclass | bool | もしテーブルが子テーブルに継承されている(または以前に継承されていた)場合は真。 | |
relrowsecurity | bool | 行単位セキュリティが有効なテーブルでは真。
pg_policy カタログを参照。
| |
relforcerowsecurity | bool | 行単位セキュリティが(有効にされているとして)テーブルの所有者にも適用されるなら真。
pg_policy カタログを参照。
| |
relispopulated | bool | リレーションにデータが投入されている場合に真(マテリアライズドビュー以外のすべてのリレーションでは真です。) | |
relreplident | char | 行に「replica identity」フォームを使った列。
d デフォルト(もしあれば主キー)、
n 無し、
f 全ての列、
i インデックスと indisreplident のセット、またはデフォルト
| |
relispartition | bool | テーブルがパーティションなら真 | |
relfrozenxid | xid | この値より以前のトランザクションIDはすべて、このテーブルで永続的な(「凍結された」)トランザクションIDに置き換えられます。
これは、このテーブルに対して、トランザクションID周回を防ぎ、かつ、pg_xact を縮小させることを目的としたバキュームを行うかどうかを追跡するために使用されます。
リレーションがテーブルではない場合は0(InvalidTransactionId )です。
| |
relminmxid | xid | このテーブル内のトランザクションIDによって置換される前のすべてのマルチトランザクションID。
これは、マルチトランザクションIDのID周回を防ぐ、またはpg_multixact を縮小させるために、テーブルをバキュームする必要があるかどうかを追跡するために使用されます。
リレーションがテーブルではない場合はゼロ(InvalidMultiXactId )です。
| |
relacl | aclitem[] | アクセス権限。 詳細はGRANTとREVOKEの説明を参照してください。 | |
reloptions | text[] | 「keyword=value」文字列のような、アクセスメソッド特有のオプション。 | |
relpartbound | pg_node_tree | テーブルがパーティションの場合(relispartition 参照)のパーティション境界の内部表現。
|
pg_class
内の複数の論理型フラグは、ゆっくりと保守されます。
正しい状態にあるときに真であることが保証されていますが、その条件が真でなくなった時即座に偽に再設定されないかもしれません。
例えばrelhasindex
はCREATE INDEX
で設定されますが、DROP INDEX
では決して初期化されません。
代わりにVACUUM
がそのテーブルにインデックスがないことを判定した場合にrelhasindex
を初期化します。
この調整により競合状態を防止し、同時実行性が向上します。