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