Перейти к основному содержимому

pg_class

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

СтолбецТип данныхОписание
oidoidИдентификатор строки
relnamenameимя столбца
relnamespaceoid (ссылается на pg_namespace.oid)OID пространства имен, которое содержит это отношение
reltypeoid (ссылается на pg_type.oid)OID типа данных, который соответствует типу строки этой таблицы, если таковой имеется; ноль для индексов, последовательностей и таблиц toast, которые не имеют записи pg_type
reloftypeoid (ссылается на pg_type.oid))Для напечатанных таблиц OID базового композитного типа; ноль для всех других отношений
relowneroid (ссылается на pg_authid.oid)Владелец отношения
relamoid (ссылается на pg_am.oid)Если это таблица или индекс, используемый метод доступа (Heap, B-Tree, Hash и т. Д.); в противном случае ноль (ноль происходит для последовательностей, а также отношений без хранения, таких как представления
relfilenodeoidИмя дискового файла этого отношения; ноль означает, что это «сопоставленное» отношение, имя дискового файла которого определяется состоянием низкого уровня
reltablespaceoid (ссылается на pg_tablespace.oid)Табличное пространство, в котором хранится это отношение. Если подразумевается ноль, то подразумевается ноль базы данных. Не имеет смысла, если отношение не имеет файла на диск, за исключением разделенных таблиц, где это табличное пространство, в котором разделам будет создаваться, когда кто-то не указан в команде создания.
relpagesint4Размер представления этой таблицы на диске в страницах (размер BLCKSZ). Это только оценка, используемая планировщиком. Она обновляется VACUUM, ANALYZE и несколькими командами DDL, такими как CREATE INDEX
reltuplesfloat4Число живых строк в таблице. Это только оценка, используемая планировщиком. Она обновляется VACUUM, ANALYZE и несколькими командами DDL, такими как CREATE INDEX. Если таблица еще не была очищена или проанализирована, reltuples содержит -1, что указывает на то, что количество строк неизвестно
relallvisibleint4Количество страниц, которые помечены как полностью видимые на карте видимости таблицы. Это только оценка, используемая планировщиком. Она обновляется VACUUM, ANALYZE и несколькими командами DDL, такими как CREATE INDEX
reltoastrelidoid (ссылается на pg_class.oid)OID таблицы TOAST, связанной с этой таблицей, ноль, если нет. Таблица TOAST хранит большие атрибуты, которые не соответствуют строке, во вторичной таблице
relhasindexboolTrue, если это таблица и у нее есть (или недавно были) какие-либо индексы
relissharedboolTrue, если эта таблица совместно используется всеми базами данных в кластере. Общими являются только определенные системные каталоги (например, pg_database)
возвратностьcharp = постоянная таблица/последовательность, u = незарегистрированная таблица/последовательность, t = временная таблица/последовательность
relkindcharr = обычная таблица, i = индекс, S = последовательность, t = таблица TOAST, v = представление, m = материализованное представление, c = композитный тип, f = сторонняя таблица, p = секционированная таблица, I = секционированный индекс
relnattsint2Количество пользовательских столбцов в отношении (системные столбцы не учитываются). Должно быть так много соответствующих записей в атрибуте pg_. См. также pg_attribute.attnum
relchecksint2Количество ограничений CHECK в таблице; см. каталог ограничений pg_constraint
relhasrulesboolTrue, если таблица имеет (или когда-либо имела) правила; см. pg_rewrite
relhastriggersboolTrue, если таблица имеет (или когда-либо имела) триггеры; см. pg_trigger
relhassubclassboolTrue, если у таблицы или индекса есть (или когда-либо были) какие-либо потомки по наследству или разделы
relrowsecurityboolTrue, если в таблице включена безопасность на уровне строк; см. pg_policy
relforcerowsecurityboolTrue, если безопасность на уровне строк (когда включена) также будет применяться к владельцу таблицы; см. каталог pg_policy
перезаполненныйboolTrue, если заполнено отношение (это верно для всех отношений, кроме некоторых материализованных представлений)
relreplidentcharСтолбцы, используемые для формирования «идентичности реплики» для строк: d = по умолчанию (первичный ключ, если таковой имеется), n = ничего, f = все столбцы, i = индекс с набором indisreplident (то же самое, что и ничего, если используемый индекс был удален)
relispartitionboolTrue, если таблица или индекс является разделом
rerewriteoid (ссылается на pg_class.oid)Для новых отношений, написанных во время операции DDL, которая требует перезаписи таблицы, это содержит OID исходного отношения; в остальном нулевое. Это состояние видно только внутри; это поле никогда не должно содержать ничего, кроме нуля для отношения, видимого пользователю
relfrozenxidxidВсе идентификаторы транзакций до этого были заменены постоянным («замороженным») идентификатором транзакции в этой таблице. Это используется для отслеживания того, нужно ли очистить таблицу, чтобы предотвратить обращение к идентификатору транзакции или позволить сузить pg_xact. Нулевой (InvalidTransactionId), если отношение не является таблицей
relminmxidxidВсе идентификаторы мультифакта до этого были заменены идентификатором транзакции в этой таблице. Это используется для отслеживания того, нужно ли очистить таблицу, чтобы предотвратить обращение идентификатора мультифакта или позволить сузить pg_multixact. Ноль (InvalidMultiXactId), если отношение не является таблицей
relaclaclitem[]Права доступа
reloptionstext[]Cпецифичные для метода доступа, как строки «ключевое слово = значение»
relpartboundpg_node_treeЕсли таблица является разделом (см. relispartition), внутреннее представление раздела, связанного

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