51.11. pg_class#

51.11. pg_class

51.11. pg_class

Каталог pg_class описывает таблицы и другие объекты, которые имеют столбцы или по-другому похожи на таблицу. Это включает индексы (но см. также pg_index), последовательности (но см. также pg_sequence), представления, материализованные представления, составные типы и таблицы TOAST; см. relkind. Ниже, когда мы говорим обо всех этих типах объектов, мы говорим о отношениях. Не все столбцы pg_class имеют смысл для всех видов отношений.

Таблица 51.11. pg_class Колонки

Тип столбца

Описание

oid oid

Идентификатор строки

relname name

Имя таблицы, индекса, представления и т. д.

relnamespace oid (ссылается на pg_namespace.oid)

OID пространства имен, которое содержит данное отношение.

reltype oid (ссылается на pg_type.oid)

OID типа данных, который соответствует типу строки этой таблицы, если таковой имеется; ноль для индексов, последовательностей и таблиц TOAST, которые не имеют записи pg_type.

reloftype oid (ссылается на pg_type.oid)

Для типизированных таблиц, OID базового составного типа; ноль для всех остальных отношений.

relowner oid (ссылается на pg_authid.oid)

Владелец отношения

relam oid (ссылается на pg_am.oid)

Если это таблица или индекс, используется метод доступа (куча, B-дерево, хеш и т. д.); в противном случае ноль (ноль встречается для последовательностей, а также для отношений без хранения, таких как представления).

relfilenode oid

Имя файла на диске для данного отношения; ноль означает, что это отображаемое отношение, имя файла на диске которого определяется низкоуровневым состоянием.

reltablespace oid (ссылается на pg_tablespace.oid)

Табличное пространство имен, в котором хранится данное отношение. Если значение равно нулю, подразумевается пространство имен по умолчанию для базы данных. (Не имеет смысла, если отношение не имеет файлов на диске).

relpages int4

Размер представления этой таблицы на диске в страницах (размером BLCKSZ). Это только оценка, используемая планировщиком. Он обновляется с помощью VACUUM, ANALYZE и несколькими командами DDL, такими как CREATE INDEX.

reltuples float4

Количество активных строк в таблице. Это только приблизительная оценка, используемая планировщиком. Она обновляется с помощью VACUUM, ANALYZE и нескольких команд DDL, таких как CREATE INDEX. Если таблица еще ни разу не была проанализирована или очищена, reltuples содержит -1, что указывает на неизвестное количество строк.

relallvisible int4

Количество страниц, которые помечены как полностью видимые в карте видимости таблицы. Это только приблизительная оценка, используемая планировщиком. Она обновляется с помощью VACUUM, ANALYZE и нескольких команд DDL, таких как CREATE INDEX.

reltoastrelid oid (ссылается на pg_class.oid)

OID таблицы TOAST, связанной с этой таблицей, ноль, если таковой нет. Таблица TOAST хранит большие атрибуты вне основной таблицы во вторичной таблице.

relhasindex bool

True если это таблица и у нее есть (или недавно были) индексы

relisshared bool

True, если эта таблица общая для всех баз данных в кластере. Общими являются только некоторые системные каталоги (например, pg_database).

relpersistence char

p = постоянная таблица/последовательность, u = незарегистрированная таблица/последовательность, t = временная таблица/последовательность

relkind char

r = обычная таблица, i = индекс, S = последовательность, t = TOAST таблица, v = представление, m = материализованное представление, c = составной тип, f = внешняя таблица, p = разделенная таблица, I = разделенный индекс

relnatts int2

Количество пользовательских столбцов в отношении (системные столбцы не учитываются). В pg_attribute должно быть столько же соответствующих записей. См. также pg_attribute.attnum.

relchecks int2

Количество ограничений CHECK на таблице; см. каталог pg_constraint.

relhasrules bool

True, если таблица имеет (или когда-либо имела) правила; см. каталог pg_rewrite

relhastriggers bool

True, если у таблицы есть (или когда-либо были) триггеры; см. pg_trigger каталог

relhassubclass bool

True, если таблица или индекс имеет (или когда-либо имела) какие-либо дочерние таблицы или секции

relrowsecurity bool

True, если для таблицы включена политика на уровне строк; см. каталог pg_policy

relforcerowsecurity bool

True, если политика на уровне строк (когда включена) также будет применяться к владельцу таблицы; см. каталог pg_policy

relispopulated bool

True если отношение заполнено (это верно для всех отношений, кроме некоторых материализованных представлений)

relreplident char

Столбцы, используемые для формирования идентификатора реплики для строк: d = по умолчанию (первичный ключ, если есть), n = ничего, f = все столбцы, i = индекс с установленным значением indisreplident (то же самое, что и ничего, если используемый индекс был удален)

relispartition bool

True, если таблица или индекс является разделом

relrewrite oid (ссылается на pg_class.oid)

Для новых отношений, записываемых во время операции DDL, которая требует перезаписи таблицы, это содержит OID исходного отношения; в противном случае ноль. Это состояние видно только внутренне; это поле никогда не должно содержать ничего, кроме нуля для отношения, видимого пользователем.

relfrozenxid xid

Все идентификаторы транзакций до этого были заменены постоянным идентификатором транзакции (frozen) в этой таблице. Это используется для отслеживания необходимости очистки таблицы для предотвращения зацикливания идентификатора транзакции или для сжатия pg_xact. Ноль (InvalidTransactionId), если отношение не является таблицей.

relminmxid xid

Все идентификаторы мультитранзакций до этого были заменены идентификатором транзакции в этой таблице. Это используется для отслеживания необходимости очистки таблицы для предотвращения зацикливания идентификаторов мультитранзакций или для возможности уменьшения размера pg_multixact. Ноль (InvalidMultiXactId), если отношение не является таблицей.

relacl aclitem[]

Права доступа; см. Раздел 5.7 для получения подробной информации

reloptions text[]

Опции, специфичные для метода доступа, в виде строк ключ=значение

relpartbound pg_node_tree

Если таблица является разделом (см. relispartition), внутреннее представление границы раздела.


В pg_class несколько флагов типа Boolean поддерживаются лениво: они гарантированно устанавливаются в true, если это правильное состояние, но могут не сбрасываться в false немедленно, когда условие больше не выполняется. Например, relhasindex устанавливается с помощью CREATE INDEX, но не сбрасывается с помощью DROP INDEX. Вместо этого VACUUM сбрасывает relhasindex, если обнаруживает, что у таблицы нет индексов. Такая организация избегает состязательных ситуаций и улучшает параллелизм.