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

pg_class

примечание

Эта страница переведена при помощи нейросети GigaChat.

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

Столбцы 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
relallfrozenint4Количество страниц, помеченных как полностью замороженные на карте видимости таблицы. Это лишь приблизительная оценка, используемая для запуска автоматической очистки. Она также может использоваться вместе с параметром relallvisible для планирования ручной очистки и настройки поведения очистки при замораживании. Обновляется командами VACUUM, ANALYZE и некоторыми командами DDL, такими как CREATE INDEX
reltoastrelidoid (ссылается на pg_class.oid)OID таблицы TOAST, связанной с этой таблицей, ноль, если нет. Таблица TOAST хранит большие атрибуты, которые не соответствуют строке, во вторичной таблице
relhasindexboolTrue, если это таблица и у нее есть (или недавно были) какие-либо индексы
relissharedboolTrue, если эта таблица совместно используется всеми базами данных в кластере. Общими являются только определенные системные каталоги (например, pg_database)
relpersistencecharp = постоянная таблица/последовательность, 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
relispopulatedboolTrue, если заполнено отношение (это верно для всех отношений, кроме некоторых материализованных представлений)
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, если обнаруживает, что таблица не имеет индексов. Такое расположение позволяет избегать условий гонки и улучшает параллелизм.