50.11. pg_class
В каталоге pg_class
описываются таблицы и прочие объекты, имеющие столбцы или каким-то образом подобные таблицам. Сюда входят индексы (но смотрите также pg_index
), последовательности (но смотрите также pg_sequence
), представления, материализованные представления, составные типы и таблицы TOAST; см. relkind
. Далее, подразумевая все эти типы объектов, мы будем говорить об «отношениях». Не все столбцы pg_class
здесь имеют смысл для всех видов отношений.
Таблица 50.11. Столбцы pg_class
Тип столбца Описание |
---|
Идентификатор строки |
Имя таблицы, индекса, представления и т. п. |
OID пространства имён, содержащего это отношение |
OID типа данных, соответствующего типу строки этой таблицы, если таковой есть (ноль для индексов, так как они не имеют записи в |
Для типизированных таблиц, OID нижележащего составного типа, или ноль для всех других отношений |
Владелец отношения |
Если это таблица или индекс, применяемый метод доступа (куча, B-дерево, хеш и т. д.) |
Имя файла на диске с этим отношением; ноль означает, что это «отображённое» представление, имя файла для которого определяется состоянием на нижнем уровне |
Табличное пространство, в котором хранится это отношение. Если указан ноль, подразумевается табличное пространство базы данных по умолчанию. Если у отношения нет файла на диске, указанное значение ни на что не влияет, кроме случаев с секционированными таблицами, где это табличное пространство, в котором будут создаваться секции, если пространство не указано явно в команде создания. |
Размер представления этой таблицы на диске (в страницах размера |
Число актуальных строк в таблице. Это лишь примерная оценка, используемая планировщиком. Она обновляется командами |
Число страниц, помеченных как «полностью видимые» в карте видимости таблицы. Это лишь примерная оценка, используемая планировщиком. Она обновляется командами |
OID таблицы TOAST, связанной с данной таблицей, или 0, если таковой нет. В таблицу TOAST, как во вторичную, «выносятся» большие атрибуты. |
True, если это таблица и она имеет (или недавно имела) индексы |
True, если эта таблица разделяется всеми базами данных в кластере. Разделяемыми являются только некоторые системные каталоги (как например, |
|
|
Число пользовательских столбцов в отношении (системные столбцы не считаются). Столько же соответствующих строк должно быть в |
Число ограничений |
True, если для таблицы определены (или были определены) правила; см. каталог |
True, если для таблицы определены (или были определены) триггеры; см. каталог |
True, если у таблицы или индекса есть (или были) потомки в иерархии наследования. |
True, если для таблицы включена защита на уровне строк; см. каталог |
True, если защита на уровне строк (когда она включена) также применяется к владельцу таблицы; см. каталог |
True, если отношение наполнено данными (это истинно для всех отношений, кроме некоторых материализованных представлений) |
Столбцы, формирующие «идентификатор реплики» для строк: |
True, если таблица или индекс является секцией |
Для новых отношений, записываемых в процессе операции DDL, требующей перезаписи таблицы, это поле содержит OID исходного отношения; в противном случае — 0. Это состояние видимо только внутри; в этом поле никогда не должно быть ненулевого значения для видимого пользователем отношения. |
Идентификаторы транзакций, предшествующие данному, в этой таблице заменены постоянным («замороженным») идентификатором транзакции. Это нужно для определения, когда требуется очищать таблицу для предотвращения зацикливания идентификаторов или для сокращения объёма |
Идентификаторы мультитранзакций, предшествующие данному, в этой таблице заменены другим идентификатором транзакции. Это нужно для определения, когда требуется очищать таблицу для предотвращения зацикливания идентификаторов мультитранзакций или для сокращения объёма |
Права доступа; за подробностями обратитесь к Разделу 5.7. |
Специальные параметры для методов доступа, в виде строк «ключ=значение» |
Если таблица является секцией (см. |
Некоторые логические флаги в pg_class
поддерживаются не строго: гарантируется, что они будут установлены при переходе в определённое состояние, но они могут не сбрасываться немедленно, когда условия поменяются. Например, relhasindex
устанавливается командой CREATE INDEX
, но никогда не сбрасывается командой DROP INDEX
. Вместо этого, флаг relhasindex
сбрасывается командой VACUUM
, если она находит, что в таблице нет индексов. Такая организация позволяет избежать состояния гонки и способствует параллельному использованию.