無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

47.11. pg_class

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

表 47-11. pg_class の列

名前 参照先 説明
oid oid   行識別子(隠し属性です。明示的に選択しなければなりません)
relname name   テーブル、インデックス、ビューなどの名前
relnamespace oid pg_namespace .oid このリレーションを持つ名前空間のOID
reltype oid pg_type .oid もし何らかの( pg_type 項目を持たないインデックスではゼロ)が存在した場合このテーブルの行の型に対応するデータ型のOID
reloftype oid pg_type .oid 型付けされたテーブルでは背後にある複合型のOID。 その他のリレーションではゼロ。
relowner oid pg_authid .oid リレーションの所有者
relam oid pg_am .oid これがインデックスの場合は、それに使われている(B-tree、ハッシュなどの)アクセスメソッド
relfilenode oid   このリレーションのディスク上のファイルの名前です。 ゼロはディスク上のファイル名が低レベルな状態で決定される "マップ付けされた" リレーションであることを意味します。
reltablespace oid pg_tablespace .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 pg_class .oid このテーブルに関連しているTOASTテーブルのOID。 何もない場合はゼロです。 TOASTテーブルは "行に収まらない" 大きい属性を副テーブルに格納します。
reltoastidxid oid pg_class .oid TOASTテーブルではそのインデックスのOID。 TOASTテーブルでない場合はゼロです。
relhasindex bool   テーブルであり、かつ、インデックスを持つ(あるいはつい最近まで持っていた)時は真。
relisshared bool   クラスタ内の全てのデータベースにわたってこのテーブルが共有されている場合は真。 ( pg_database のような)ある特定のシステムカタログのみ共有されます。
relpersistence char   p は永続テーブル、 u はログを取らないテーブル、 t は一時テーブルを表します。
relkind char   r は通常のテーブル、 i はインデックス、 S はシーケンス、 v はビュー、 m はマテリアライズドビュー、  c は複合型、 t はTOASTテーブル、 f は外部テーブルを表します。
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   もしテーブルが子テーブルに継承されている(または以前に継承されていた)場合は真。
relispopulated bool   リレーションにデータが投入されている場合に真(マテリアライズドビュー以外のすべてのリレーションでは真です。)
relfrozenxid xid   この値より以前のトランザクションIDはすべて、このテーブルで永遠( "凍結" )トランザクションIDに置き換えられます。 これは、このテーブルに対して、トランザクションID周回を防ぎ、かつ、 pg_clog を縮小させることを目的としたバキュームを行うかどうかを追跡するために使用されます。 リレーションがテーブルではない場合は0( InvalidTransactionId )です。
relminmxid xid   このテーブル内のトランザクションIDによって置換される前のすべてのマルチトランザクションID。 これは、マルチトランザクションIDのID周回を防ぐ、または pg_clog を縮小させるために、テーブルをバキュームする必要があるかどうかを追跡するために使用されます。 リレーションがテーブルではない場合はゼロ( InvalidTransactionId )です。
relacl aclitem[]   アクセス権限。 詳細は GRANT REVOKE の説明を参照してください。
reloptions text[]   "keyword=value" 文字列のような、アクセスメソッド特有のオプション。

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


powered by SEO.CUG.NET