★PostgreSQLカンファレンス2024 12月6日開催/チケット販売中★
他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

45.11. pg_class

pg_classカタログはテーブルと、その他に列を持つもの、あるいはテーブルに似た全てのものを目録にしています。 その中にはインデックス(pg_indexも参照)、シーケンス、ビュー、複合型およびTOASTテーブルが含まれます。 relkindを参照してください。 これより以降、"リレーション"と記されている場合はこれらすべてのオブジェクトを意味しています。 すべての列が全てのリレーションの型に該当するとは限りません。

表 45-11. pg_classの列

名前参照先説明
relnamename テーブル、インデックス、ビューなどの名前
relnamespaceoidpg_namespace.oid このリレーションを持つ名前空間のOID
reltypeoidpg_type.oid もし何らかの(pg_type項目を持たないインデックスではゼロ)が存在した場合このテーブルの行の型に対応するデータ型のOID
reloftypeoidpg_type.oid型付けされたテーブルでは背後にある複合型のOID。 その他のリレーションではゼロ。
relowneroidpg_authid.oidリレーションの所有者
relamoidpg_am.oidこれがインデックスの場合は、それに使われている(B-tree、ハッシュなどの)アクセスメソッド
relfilenodeoid このリレーションのディスク上のファイル名前です。 ゼロはディスク上のファイル名が低レベルな状態で決定される"マップ付けされた"リレーションであることを意味します。
reltablespaceoidpg_tablespace.oidこのリレーションが保存されているテーブル空間。 もしゼロならば、このデータベースのデフォルトテーブル空間を意味します。 (リレーションがディスク上のファイルになくても、問題はありません。)
relpagesint4 このテーブルのディスク上におけるページ単位(BLCKSZ)の表現サイズ。 これはプランナで使用される単なる推測値です。 VACUUMANALYZEおよびCREATE INDEXコマンドなどの一部のDDLコマンドで更新されます。
reltuplesfloat4 テーブル内の行数。 これはプランナで使用される単なる推測値です。 VACUUMANALYZECREATE INDEXなどの一部のDDLコマンドで更新されます。
reltoastrelidoidpg_class.oidこのテーブルに関連しているTOASTテーブルのOID。 何もない場合はゼロです。 TOASTテーブルは"行に収まらない"大きい属性を副テーブルに格納します。
reltoastidxidoidpg_class.oidTOASTテーブルに対するインデックスのOID。 TOASTテーブルでない場合はゼロ。
relhasindexbool テーブルであり、かつ、インデックスを持つ(あるいはつい最近まで持っていた)時は真。
relissharedbool クラスタ内の全てのデータベースにわたってこのテーブルが共有されている場合は真。 (pg_databaseのような)ある特定のシステムカタログのみ共有されます。
relpersistencechar pは永続テーブル、uはログを取らないテーブル、tは一時テーブルを表します。
relkindchar rは通常のテーブル、iはインデックス、Sはシーケンス、vはビュー、cは複合型、tはTOASTテーブル、fは外部テーブルを表します。
relnattsint2 リレーションにあるユーザ列数(システム列は含みません)。 pg_attributeにこれに対応する数多くの項目があるはずです。 pg_attribute.attnumも参照してください。
relchecksint2 テーブル上のCHECK制約の数。 pg_constraintカタログを参照してください。
relhasoidsbool リレーションの行毎にOIDを生成する場合は真。
relhaspkeybool テーブルにプライマリキーが含まれている(あるいは過去含まれていた)場合に真。
relhasrulesbool もしテーブルにルールがある(あるいは以前あった)場合に真。 pg_rewriteカタログを参照してください。
relhastriggersbool もしテーブルにトリガがある(あるいは以前あった)場合に真。 pg_triggerカタログを参照してください。
relhassubclassbool もしテーブルが子テーブルに継承されている(または以前に継承されていた)場合は真。
relfrozenxidxid この値より以前のトランザクションIDはすべて、このテーブルで永遠("凍結")トランザクションIDに置き換えられます。 これは、このテーブルに対して、トランザクションID周回を防ぎ、かつ、pg_clogを縮小させることを目的としたバキュームを行うかどうかを追跡するために使用されます。 リレーションがテーブルではない場合は0(InvalidTransactionId)です。
relaclaclitem[] アクセス権限。 詳細はGRANTREVOKEの説明を参照してください。
reloptionstext[] "keyword=value"文字列のような、アクセスメソッド特有のオプション。

pg_class内の複数の論理型フラグは、ゆっくりと保守されます。 正しい状態にあるときに真であることが保証されていますが、その条件が真でなくなった時即座に偽に再設定されないかもしれません。 例えばrelhasindexCREATE INDEXで設定されますが、DROP INDEXでは決して初期化されません。 代わりにVACUUMがそのテーブルにインデックスがないことを判定した場合にrelhasindexを初期化します。 この調整により競合状態を防止し、同時実行性が向上します。