pg_class
#
The catalog <structname>pg_class</structname> describes tables and
other objects that have columns or are otherwise similar to a
table. This includes indexes (but see also <link
linkend="catalog-pg-index"><structname>pg_index</structname></link>),
sequences (but see also <link
linkend="catalog-pg-sequence"><structname>pg_sequence</structname></link>),
views, materialized views, composite types, and TOAST tables;
see <structfield>relkind</structfield>.
Below, when we mean all of these kinds of objects we speak of
<quote>relations</quote>. Not all of <structname>pg_class</structname>'s
columns are meaningful for all relation kinds.
pg_class
カタログは、テーブルとその他に列を持つもの、あるいはテーブルに類似したオブジェクトを記述します。
その中にはインデックス(pg_index
も参照)、シーケンス(pg_sequence
も参照)、ビュー、マテリアライズドビュー、複合型およびTOASTテーブルが含まれます。
relkind
を参照してください。
これより以降、「リレーション」と記されている場合はこれらすべてのオブジェクトを意味しています。
pg_class
のすべての列がすべてのリレーション種別にとって意味を持つわけではありません。
表51.11 pg_class
の列
Column Type 列 型 Description 説明 |
---|
Row identifier 行識別子 |
Name of the table, index, view, etc. テーブル、インデックス、ビューなどの名前 |
The OID of the namespace that contains this relation このリレーションを持つ名前空間のOID |
The OID of the data type that corresponds to this table's row type,
if any; zero for indexes, sequences, and toast tables, which have
no <structname>pg_type</structname> entry
このテーブルの行の型に対応するデータ型のOID。ゼロならば、 |
For typed tables, the OID of the underlying composite type; zero for all other relations 型付けされたテーブルでは背後にある複合型のOID。 その他のリレーションではゼロ |
Owner of the relation リレーションの所有者 |
The access method used to access this table or index.
Not meaningful if the relation is a sequence or
has no on-disk file,
except for partitioned tables, where, if set, it takes
precedence over <varname>default_table_access_method</varname>
when determining the access method to use for partitions created
when one is not specified in the creation command.
このテーブルまたはインデックスをアクセスするために使用されるアクセスメソッド。
リレーションがシーケンスの場合やディスク上のファイルがない場合は意味がありません。
パーティションテーブルの場合、設定されている場合は、作成コマンドで指定されていないパーティションのアクセスメソッドを決定する際に、 |
Name of the on-disk file of this relation; zero means this is a <quote>mapped</quote> relation whose disk file name is determined by low-level state このリレーションのディスク上のファイルの名前です。 ゼロはディスク上のファイル名が低レベルな状態で決定される「マップ付けされた」リレーションであることを意味します。 |
The tablespace in which this relation is stored. If zero, the database's default tablespace is implied. Not meaningful if the relation has no on-disk file, except for partitioned tables, where this is the tablespace in which partitions will be created when one is not specified in the creation command. このリレーションが格納されるテーブル空間。 ゼロの場合、データベースのデフォルトのテーブル空間が暗黙的に使用されます。 ディスク上にファイルがないリレーションの場合は、パーティションテーブルの場合を除き、意味がありません。 パーティションテーブルの場合、作成コマンドでテーブル空間が指定されていない場合にパーティションが作成されるテーブル空間です。 |
Size of the on-disk representation of this table in pages (of size
<symbol>BLCKSZ</symbol>). This is only an estimate used by the
planner. It is updated by <link linkend="sql-vacuum"><command>VACUUM</command></link>,
<link linkend="sql-analyze"><command>ANALYZE</command></link>, and a few DDL commands such as
<link linkend="sql-createindex"><command>CREATE INDEX</command></link>.
このテーブルのディスク上表現のページ単位( |
Number of live rows in the table. This is only an estimate used by
the planner. It is updated by <link linkend="sql-vacuum"><command>VACUUM</command></link>,
<link linkend="sql-analyze"><command>ANALYZE</command></link>, and a few DDL commands such as
<link linkend="sql-createindex"><command>CREATE INDEX</command></link>.
If the table has never yet been vacuumed or
analyzed, <structfield>reltuples</structfield>
contains <literal>-1</literal> indicating that the row count is
unknown.
テーブル内の生きている行数。
これはプランナで使用される単なる推測値です。
|
Number of pages that are marked all-visible in the table's
visibility map. This is only an estimate used by the
planner. It is updated by <link linkend="sql-vacuum"><command>VACUUM</command></link>,
<link linkend="sql-analyze"><command>ANALYZE</command></link>, and a few DDL commands such as
<link linkend="sql-createindex"><command>CREATE INDEX</command></link>.
テーブル内の可視マップ内で全て可視とマークされているページ数。
これはプランナで使用される単なる見積です。
|
OID of the TOAST table associated with this table, zero if none. The TOAST table stores large attributes <quote>out of line</quote> in a secondary table. このテーブルに関連しているTOASTテーブルのOID。 何もない場合はゼロ。 TOASTテーブルは「行に収まらない」大きい属性を副テーブルに格納します。 |
True if this is a table and it has (or recently had) any indexes テーブルであり、かつ、インデックスを持つ(あるいはつい最近まで持っていた)場合はtrue |
True if this table is shared across all databases in the cluster. Only
certain system catalogs (such as <link linkend="catalog-pg-database"><structname>pg_database</structname></link>)
are shared.
クラスタ内の全てのデータベースにわたってこのテーブルが共有されている場合はtrue。
( |
<literal>p</literal> = permanent table/sequence, <literal>u</literal> = unlogged table/sequence,
<literal>t</literal> = temporary table/sequence
|
<literal>r</literal> = ordinary table,
<literal>i</literal> = index,
<literal>S</literal> = sequence,
<literal>t</literal> = TOAST table,
<literal>v</literal> = view,
<literal>m</literal> = materialized view,
<literal>c</literal> = composite type,
<literal>f</literal> = foreign table,
<literal>p</literal> = partitioned table,
<literal>I</literal> = partitioned index
|
Number of user columns in the relation (system columns not
counted). There must be this many corresponding entries in
<link linkend="catalog-pg-attribute"><structname>pg_attribute</structname></link>. See also
<structname>pg_attribute</structname>.<structfield>attnum</structfield>.
リレーションにあるユーザ列数(システム列は含みません)。
|
Number of <literal>CHECK</literal> constraints on the table; see
<link linkend="catalog-pg-constraint"><structname>pg_constraint</structname></link> catalog
テーブル上の |
True if table has (or once had) rules; see
<link linkend="catalog-pg-rewrite"><structname>pg_rewrite</structname></link> catalog
テーブルにルールがある(あるいは以前あった)場合はtrue。
|
True if table has (or once had) triggers; see
<link linkend="catalog-pg-trigger"><structname>pg_trigger</structname></link> catalog
テーブルにトリガがある(あるいは以前あった)場合はtrue。
|
True if table or index has (or once had) any inheritance children or partitions テーブルあるいはインデックスが子テーブルあるいはパーティションに継承されている(または以前に継承されていた)場合はtrue |
True if table has row-level security enabled; see
<link linkend="catalog-pg-policy"><structname>pg_policy</structname></link> catalog
行単位セキュリティが有効なテーブルの場合はtrue。
|
True if row-level security (when enabled) will also apply to table owner; see
<link linkend="catalog-pg-policy"><structname>pg_policy</structname></link> catalog
行単位セキュリティが(有効にされているとして)テーブルの所有者にも適用される場合はtrue。
|
True if relation is populated (this is true for all relations other than some materialized views) リレーションにデータが投入されている場合はtrue(マテリアライズドビュー以外のすべてのリレーションではtrueです) |
Columns used to form <quote>replica identity</quote> for rows:
<literal>d</literal> = default (primary key, if any),
<literal>n</literal> = nothing,
<literal>f</literal> = all columns,
<literal>i</literal> = index with
<structfield>indisreplident</structfield> set (same as nothing if the
index used has been dropped)
行に「replica identity」フォームを使った列:
|
True if table or index is a partition テーブルあるいはインデックスがパーティションである場合はtrue |
For new relations being written during a DDL operation that requires a table rewrite, this contains the OID of the original relation; otherwise zero. That state is only visible internally; this field should never contain anything other than zero for a user-visible relation. テーブルの書き換えが必要なDDL操作中に書き込みが行われる新しいリレーションでは、これは元のリレーションのOIDを持ちます。 そうでなければゼロです。 この状態は内部的にのみ可視です。 このフィールドはユーザから見えるリレーションではゼロ以外を持つべきではありません。 |
All transaction IDs before this one have been replaced with a permanent
(<quote>frozen</quote>) transaction ID in this table. This is used to track
whether the table needs to be vacuumed in order to prevent transaction
ID wraparound or to allow <literal>pg_xact</literal> to be shrunk. Zero
(<symbol>InvalidTransactionId</symbol>) if the relation is not a table.
この値より以前のトランザクションIDはすべて、このテーブルで永続的な(「凍結された」)トランザクションIDに置き換えられています。
これは、このテーブルに対して、トランザクションID周回を防ぎ、かつ、 |
All multixact IDs before this one have been replaced by a
transaction ID in this table. This is used to track
whether the table needs to be vacuumed in order to prevent multixact ID
wraparound or to allow <literal>pg_multixact</literal> to be shrunk. Zero
(<symbol>InvalidMultiXactId</symbol>) if the relation is not a table.
このテーブル内のトランザクションIDによって置換される前のすべてのマルチトランザクションID。
これは、マルチトランザクションIDのID周回を防ぐ、または |
Access privileges; see <xref linkend="ddl-priv"/> for details アクセス権限。 詳細は5.8を参照してください |
Access-method-specific options, as <quote>keyword=value</quote> strings 「keyword=value」文字列のような、アクセスメソッド特有のオプション |
If table is a partition (see <structfield>relispartition</structfield>),
internal representation of the partition bound
テーブルがパーティションの場合( |
Several of the Boolean flags in <structname>pg_class</structname> are maintained
lazily: they are guaranteed to be true if that's the correct state, but
may not be reset to false immediately when the condition is no longer
true. For example, <structfield>relhasindex</structfield> is set by
<link linkend="sql-createindex"><command>CREATE INDEX</command></link>, but it is never cleared by
<link linkend="sql-dropindex"><command>DROP INDEX</command></link>. Instead, <link linkend="sql-vacuum"><command>VACUUM</command></link> clears
<structfield>relhasindex</structfield> if it finds the table has no indexes. This
arrangement avoids race conditions and improves concurrency.
pg_class
内の複数の論理型フラグは、ゆっくりと保守されます。
正しい状態にあるときにtrueであることが保証されていますが、その条件がtrueでなくなった時即座にfalseに再設定されないかもしれません。
例えばrelhasindex
はCREATE INDEX
で設定されますが、DROP INDEX
では決して初期化されません。
代わりにVACUUM
がそのテーブルにインデックスがないことを判定した場合にrelhasindex
を初期化します。
この調整により競合状態を防止し、同時実行性が向上します。