Системные представления

Помимо системных каталогов, QHB предоставляет ряд встроенных представлений. Некоторые системные представления обеспечивают удобный доступ к ряду часто используемых запросов в системных каталогах. Другие представления обеспечивают доступ к внутреннему состоянию сервера.

Информационная схема предоставляет альтернативный набор представлений, которые перекрывают функциональные возможности системных представлений. Поскольку информационная схема является частью стандарта SQL, а описанные здесь представления специфичны для QHB, обычно лучше использовать информационную схему, если та выдает всю необходимую информацию.



Обзор

В Таблице 1 перечислены описываемые здесь системные представления. Более подробная информация по каждому представлению приведена ниже. Существует несколько дополнительных представлений, обеспечивающих доступ к результатам работы сборщика статистики; они описаны в таблице Представления по собранной статистике.

Кроме явно отмеченных исключений, все описанные здесь представления доступны только для чтения.

Таблица 1. Системные представления

Имя представленияНазначение
pg_available_extensionsдоступные расширения
pg_available_extension_versionsдоступные версии расширений
pg_backend_memory_contextsконтексты памяти обслуживающего процесса
pg_configпараметры конфигурации времени компиляции
pg_cursorsоткрытые курсоры
pg_file_settingsсводка содержимого файла конфигурации
pg_groupгруппы пользователей баз данных
pg_hba_file_rulesсводка содержимого файла конфигурации аутентификации клиентов
pg_ident_file_mappingsсводка содержимого файла конфигурации с сопоставлением имен пользователей клиентов
pg_indexesиндексы
pg_locksудерживаемые или ожидаемые в настоящий момент блокировки
pg_matviewsматериализованные представления
pg_policiesполитики
pg_prepared_statementsподготовленные операторы
pg_prepared_xactsподготовленные транзакции
pg_publication_tablesпубликации и связанные с ними таблицы
pg_replication_origin_statusсведения об источниках репликации, включая ход выполнения репликации
pg_replication_slotsсведения о слотах репликации
pg_rolesроли базы данных
pg_rulesправила
pg_seclabelsметки безопасности
pg_sequencesпоследовательности
pg_settingsнастройки параметров
pg_shadowпользователи базы данных
pg_shmem_allocationsблоки, выделенные в разделяемой памяти
pg_statsстатистика планировщика
pg_stats_extрасширенная статистика планировщика
pg_stats_ext_exprsрасширенная статистика планировщика для выражений
pg_tablesтаблицы
pg_timezone_abbrevsаббревиатуры часовых поясов
pg_timezone_namesназвания часовых поясов
pg_userпользователи базы данных
pg_user_mappingsсопоставления пользователей
pg_viewsпредставления


pg_available_extensions

Представление pg_available_extensions содержит список доступных для установки расширений. См. также каталог pg_extension, в котором отображаются уже установленные расширения.

Таблица 2. Столбцы pg_available_extensions

Столбец Тип
Описание
name name
Имя расширения
default_version text
Имя версии по умолчанию или NULL, если версия не указана
installed_version text
Версия расширения, установленная в настоящий момент, или NULL, если расширение не установлено
comment text
Строка комментария из управляющего файла расширения

Представление pg_available_extensions доступно только для чтения.



pg_available_extension_versions

Представление pg_available_extension_versions содержит список конкретных версий расширений, доступных для установки. См. также каталог pg_extension, в котором отображаются уже установленные на данный момент расширения.

Таблица 3. Столбцы pg_available_extension_versions

Столбец Тип
Описание
name name
Имя расширения
version text
Имя версии
installed bool
True, если эта версия данного расширения уже установлена
superuser bool
True, если это расширение разрешено устанавливать только суперпользователям (но см. trusted)
trusted bool
True, если это расширение могут устанавливать обычные пользователи с надлежащими правами
relocatable bool
True, если расширение можно переместить в другую схему
schema name
Имя схемы, в которую необходимо установить расширение, или NULL, если оно частично или полностью переместимо
requires name[]
Имена расширений, заранее необходимых для данного, или NULL, если таковых нет
comment text
Строка комментария из управляющего файла расширения

Представление pg_available_extension_versions доступно только для чтения.



pg_backend_memory_contexts

В представлении pg_backend_memory_contexts отображаются все контексты памяти серверного процесса, назначенного текущему сеансу.

Для каждого контекста памяти pg_backend_memory_contexts содержит одну строку.

Таблица 4. Столбцы pg_backend_memory_contexts

Столбец Тип
Описание
name text
Имя контекста памяти
ident text
Идентификационная информация о контексте памяти. Размер этого поля ограничен 1024 байтами
parent text
Имя родителя этого контекста памяти
level int4
Расстояние от верхнего контекста памяти (TopMemoryContext) в дереве контекстов
total_bytes int8
Общее количество байтов, выделенных для этого контекста памяти
total_nblocks int8
Общее количество блоков памяти, выделенных для этого контекста памяти
free_bytes int8
Объем свободного пространства в байтах
free_chunks int8
Общее количество свободных участков памяти
used_bytes int8
Объем использованного пространства в байтах

По умолчанию представление pg_backend_memory_contexts могут прочитать только суперпользователи или роли с правами роли pg_read_all_stats.



pg_config

В представлении pg_config описываются параметры конфигурации времени компиляции текущей установленной версии QHB. Оно предназначено, например, для использования программными пакетами, которым может понадобиться содействие QHB в поиске необходимых заголовочных файлов и библиотек. Оно предоставляет ту же базовую информацию, что и клиентское приложение QHB pg_config.

По умолчанию представление pg_config могут прочитать только суперпользователи.

Таблица 5. Столбцы pg_config

Столбец Тип
Описание
name text
Имя параметра
setting text
Значение параметра


pg_cursors

Представление pg_cursors содержит список курсоров, доступных в настоящий момент. Курсоры могут быть определены несколькими способами:

  • через оператор DECLARE в SQL

  • через сообщение Bind в клиент-серверном протоколе QHB, как описано в подразделе Расширенный запрос

  • через интерфейс программирования сервера (Server Programming Interface, SPI), как описано в разделе Функции интерфейса

В представлении pg_cursors отображаются курсоры, созданные любым из этих средств. Курсоры существуют только в течение транзакции, которая их определяет, если только они не были объявлены WITH HOLD. Таким образом, не удерживаемые курсоры присутствуют в представлении только до конца создавшей их транзакции.

Примечание
Курсоры используются внутри системы для реализации некоторых компонентов QHB, например процедурных языков. Поэтому представление pg_cursors может содержать курсоры, которые не были явно созданы пользователем.

Таблица 6. Столбцы pg_cursors

Столбец Тип
Описание
name text
Имя курсора
statement text
Дословная строка запроса, представившая объявление этого курсора
is_holdable bool
true, если курсор удерживаемый (т. е. может быть доступен после фиксации транзакции, в которой он был объявлен); иначе — false
is_binary bool
true, если курсор был объявлен с указанием BINARY; иначе — false
is_scrollable bool
true, если курсор прокручиваемый (т. е. позволяет извлекать строки непоследовательным образом); иначе — false
creation_time timestamptz
Время, когда был объявлен курсор

Представление pg_cursors доступно только для чтения.



pg_file_settings

В представлении pg_file_settings выводится сводка содержимого файла(ов) конфигурации сервера. Для каждой записи «имя = значение», фигурирующей в этих файлах, данное представление содержит строку с примечаниями, показывающими, может ли это значение быть успешно применено. Также для проблем, не связанных с записью «имя = значение», например синтаксических ошибок в файлах, в этом представлении может содержаться дополнительная строка (или строки).

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

По умолчанию представление pg_file_settings могут прочитать только суперпользователи.

Таблица 7. Столбцы pg_file_settings

Столбец Тип
Описание
sourcefile text
Полный путь к файлу конфигурации
sourceline int4
Номер строки в файле конфигурации, где присутствует эта запись
seqno int4
Порядок, в котором обрабатываются записи (1..n)
name text
Имя параметра конфигурации
setting text
Значение, присваиваемое параметру
applied bool
True, если значение может быть применено успешно
error text
Сообщение об ошибке, указывающее, почему эта запись не может быть применена, или NULL

Если файл конфигурации содержит синтаксические ошибки или недопустимые имена параметров, сервер не будет пытаться применить какие-либо параметры из файла, а следовательно, все поля applied будут читаться как false. В таком случае в представлении будет одна или несколько строк с полями error, отличными от NULL, указывающими на проблему(ы). Иначе, если это возможно, будут применяться отдельные параметры. Если отдельный параметр применить нельзя (например, из-за недопустимого значения или если параметр нельзя изменить после запуска сервера), для него будет записано соответствующее сообщение в поле error. Другой вариант, при котором поле applied будет содержать false, означает, что эта запись переопределяется более поздней записью для того же имени параметра; этот случай не считается ошибкой, поэтому в поле error ничего не появляется.

Дополнительную информацию о различных способах изменения параметров времени выполнения см. в разделе Настройка параметров



pg_group

В представлении pg_group отображаются имена и члены всех ролей, отмеченных как не имеющие признака rolcanlogin, что примерно соответствует набору ролей, которые использовались как группы.

Таблица 8. Столбцы pg_group

Столбец Тип
Описание
groname name (ссылается на pg_authid.rolname)
Имя группы
grosysid oid (ссылается на pg_authid.oid)
Идентификатор этой группы
grolist oid[] (ссылается на pg_authid.oid)
Массив, содержащий идентификаторы ролей в этой группе


pg_hba_file_rules

В представлении pg_hba_file_rules выводится сводка содержимого файла конфигурации аутентификации клиентов, qhb_hba.conf. Для каждой непустой строки файла, не имеющей комментариев, это представление содержит строку с примечаниями, показывающими, может ли это правило быть успешно применено.

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

По умолчанию представление pg_hba_file_rules могут прочитать только суперпользователи.

Таблица 9. Столбцы pg_hba_file_rules

Столбец Тип
Описание
line_number int4
Номер строки этого правила в qhb_hba.conf
type text
Тип соединения
database text[]
Список имен баз данных, к которым применяется это правило
user_name text[]
Список имен пользователей и групп, к которым применяется это правило
address text
Имя или IP-адрес хоста, либо одно из значений: all (все), samehost (тот же хост) или samenet (та же сеть), либо NULL для локальных соединений
netmask text
Маска IP-адреса или NULL, если это неприменимо
auth_method text
Метод аутентификации
options text[]
Параметры, указанные для метода аутентификации, если таковые имеются
error text
Сообщение об ошибке, указывающее, почему эта строка не может быть обработана, или NULL

Обычно строка, отражающая неверную запись, будет иметь значения только для полей line_number и error.

Более подробную информацию о конфигурации аутентификации клиентов см. в главе Аутентификация клиентского приложения.



pg_ident_file_mappings

В представлении pg_ident_file_mappings выводится сводка содержимого файла конфигурации сопоставления имен пользователей клиентов, pg_ident.conf. Для каждой непустой строки файла, не имеющей комментариев, это представление содержит строку с примечаниями, показывающими, может ли это сопоставление быть успешно применено.

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

По умолчанию представление pg_ident_file_mappings могут прочитать только суперпользователи.

Таблица 10. Столбцы pg_ident_file_mappings

Столбец Тип
Описание
line_number int4
Номер строки этого сопоставления в pg_ident.conf
map_name text
Имя сопоставления
sys_name text
Обнаруженное имя пользователя клиента
pg_username text
Запрошенное имя пользователя QHB
error text
Сообщение об ошибке, указывающее, почему эта строка не может быть обработана, или NULL

Обычно строка, отражающая неверную запись, будет иметь значения только для полей line_number и error.

Более подробную информацию о конфигурации аутентификации клиентов см. в главе Аутентификация клиентского приложения.



pg_indexes

Представление pg_indexes предоставляет доступ к полезной информации о каждом индексе в базе данных.

Таблица 11. Столбцы pg_indexes

Столбец Тип
Описание
schemaname name (ссылается на pg_namespace.nspname)
Имя схемы, содержащей таблицу и индекс
tablename name (ссылается на pg_class.relname)
Имя таблицы, для которой предназначен индекс
indexname name (ссылается на pg_class.relname)
Имя индекса
tablespace name (ссылается на pg_tablespace.spcname)
Имя табличного пространства, содержащего индекс (NULL, если это пространство по умолчанию для базы данных)
indexdef text
Определение индекса (реконструированная команда CREATE INDEX)


pg_locks

Представление pg_locks предоставляет доступ к информации о блокировках, удерживаемых активными процессами на сервере баз данных. Подробно процесс блокировки рассматривается в главе Управление параллельным доступом.

Для каждого активного блокируемого объекта, запрошенного режима блокировки и соответствующего процесса pg_locks содержит одну строку. Таким образом, один и тот же блокируемый объект может фигурировать здесь много раз, если его блокируют или ожидают его блокировки несколько процессов. Однако объект, который в настоящее время не имеет блокировок, не будет отображаться вообще.

Существует несколько различных типов блокируемых объектов: отношения целиком (например, таблицы), отдельные страницы отношений, отдельные кортежи отношений, идентификаторы транзакций (как виртуальные, так и постоянные) и общие объекты базы данных (идентифицируемые по OID класса и OID объекта, так же как и в каталоге pg_description или pg_depend). Также в виде отдельного блокируемого объекта представляется право на расширение отношения, а также право изменения значения pg_database.datfrozenxid. Кроме того, могут встречаться «рекомендательные» блокировки, значения которых определяет пользователь.

Таблица 12. Столбцы pg_locks

Столбец Тип
Описание
locktype text
Тип блокируемого объекта: relation (отношение), extend (расширение), page (страница), tuple (кортеж), transactionid (идентификатор транзакции), virtualxid (виртуальный идентификатор), spectoken (спекулятивный маркер), object (объект), userlock (пользовательская блокировка) или advisory (рекомендательная блокировка). (См. также таблицу События ожидания типа Lock.)
database oid (ссылается на pg_database.oid)
OID базы данных, в которой существует цель блокировки, или ноль, если цель является разделяемым объектом, или NULL, если цель является идентификатором транзакции
relation oid (ссылается на pg_class.oid)
OID отношения, на которое нацелена блокировка, или NULL, если цель не является отношением или частью отношения
page int4
Номер страницы, на которую нацелена блокировка в пределах отношения, или NULL, если цель не является страницей или кортежем отношения
tuple int2
Номер кортежа, на который нацелена блокировка внутри страницы, или NULL, если цель не является кортежем
virtualxid text
Виртуальный идентификатор транзакции, на которую нацелена блокировка, или NULL, если цель не является виртуальным идентификатором транзакции
transactionid xid
Идентификатор транзакции, на которую нацелена блокировка, или NULL, если цель не является идентификатором транзакции
classid oid (ссылается на pg_class.oid)
OID системного каталога, содержащего цель блокировки, или NULL, если цель не является обычным объектом базы данных
objid oid (ссылается на какой-либо столбец OID)
OID цели блокировки в системном каталоге или NULL, если цель не является обычным объектом базы данных
objsubid int2
Номер столбца, на который нацелена блокировка (поля classid и objid ссылаются на саму таблицу), или ноль, если цель является каким-либо другим обычным объектом базы данных, или NULL, если цель не является обычным объектом базы данных
virtualtransaction text
Виртуальный идентификатор транзакции, которая удерживает или ожидает эту блокировку
pid int4
Идентификатор серверного процесса (PID), удерживающего или ожидающего эту блокировку, или NULL, если блокировка удерживается подготовленной транзакцией
mode text
Имя режима блокировки, удерживаемой или ожидаемой этим процессом (см. подразделы Блокировки на уровне таблицы и Уровень изоляции Serializable)
granted bool
True, если блокировка удерживается, false, если блокировка ожидается
fastpath bool
True, если блокировка была получена посредством быстрого пути, false, если она получена через главную таблицу блокировки
waitstart timestamptz
Время, когда серверный процесс начал ожидать эту блокировку, или NULL, если блокировка удерживается. Обратите внимание, что после начала ожидания в этом поле может кратковременно стоять NULL, несмотря на то, что поле granted равно false.

Поле granted имеет значение true в строке, представляющей блокировку, удерживаемую указанным процессом. Значение false показывает, что этот процесс в настоящее время ожидает получения данной блокировки, свидетельствуя о том, что как минимум еще один процесс удерживает или ожидает блокировку того же объекта в конфликтном режиме. Ожидающий процесс будет находиться в спящем режиме до тех пор, пока не будет снята другая блокировка (или обнаружена ситуация взаимоблокировки). Один процесс может ожидать получения не более одной блокировки за раз.

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

Хотя кортежи относятся к блокируемому типу объектов, информация о блокировках на уровне строк хранится на диске, а не в памяти, и поэтому обычно блокировки на уровне строк в этом представлении не отображаются. Если процесс ожидает блокировки уровня строки, он обычно фигурирует в представлении как ожидающий постоянного идентификатора транзакции текущего владельца этой блокировки.

Рекомендательные блокировки можно получить по ключам, состоящим из одного значения bigint или двух значений integer. При выведении ключа bigint его старшая часть отображается в столбце classid, младшая — в столбце objid, а objsubid равен 1. Исходное значение bigint можно собрать заново с помощью выражения (classid::bigint << 32) | objid::bigint. Ключи integer отображаются так: первый в столбце classid, второй — в столбце objid, а objsubid равен 2. Фактическое значение ключей определяет пользователь. Рекомендательные блокировки являются локальными для каждой базы данных, поэтому столбец database имеет для них значение.

pg_locks обеспечивает глобальное представление всех блокировок в кластере баз данных, а не только тех, которые относятся к текущей базе. Хотя через соединение столбцов relation и pg_class.oid можно определить заблокированные отношения, это будет правильно работать только для отношений в текущей базе данных (т. е. тех, для которых столбец database — это либо OID текущей базы данных, либо ноль).

Столбец pid можно соединить со столбцом pid представления pg_stat_activity, что позволит получить дополнительную информацию о сеансе, удерживающем или ожидающем каждую блокировку, например:

SELECT * FROM pg_locks pl LEFT JOIN pg_stat_activity psa
    ON pl.pid = psa.pid;

Кроме того, при использовании подготовленных транзакций столбец virtualtransaction можно соединить со столбцом transaction представления pg_prepared_xacts, что позволит получить дополнительную информацию об удерживающих блокировки подготовленных транзакциях. (Подготовленная транзакция не может ожидать блокировки, но продолжает удерживать блокировки, полученные ею в процессе выполнения.) Например:

SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx
    ON pl.virtualtransaction = '-1/' || ppx.transaction;

Хотя и возможно получить информацию о том, какие из процессов блокируют другие процессы (и какие именно), соединив представление pg_locks с самим собой, крайне трудно сделать это правильно во всех деталях. В таком запросе пришлось бы закодировать знание о том, какие режимы блокировки конфликтуют с другими. Хуже того, представление pg_locks не выдает информацию ни о том, какие процессы опережают другие в очередях ожидания блокировки, ни о том, какие процессы являются параллельными рабочими процессами и от от имени каких других сеансов клиента они выполняются. Чтобы определить, каким процессом (или процессами) блокируется ожидающий процесс, лучше воспользоваться функцией pg_blocking_pids() (см. таблицу Функции для получения информации о сеансе).

Представление pg_locks отображает данные как из менеджера обычных блокировок, так и из менеджера предикатных блокировок, которые являются отдельными системами; кроме того, менеджер обычных блокировок подразделяет свои блокировки на обычные и полученные быстрым путем. Полная согласованность этих данных не гарантируется. При запросе к этому представлению данные о блокировках по быстрому пути (с fastpath = true) собираются с каждого серверного процесса по очереди, без замораживания состояние всего менеджера блокировок, поэтому существует вероятность того, что во время сбора этой информации блокировки будут получены или освобождены. Обратите внимание, однако, что известно, что эти блокировки не должны конфликтовать ни с какими другими действующими блокировками. После того как во все серверные процессы были сделаны запросы для получения быстрых блокировок, оставшаяся часть менеджера обычных блокировок блокируется как единое целое, и согласованный снимок всех оставшихся блокировок собирается атомарно. После разблокирования менеджера обычных блокировок аналогичным образом блокируется менеджер предикатных блокировок, и все предикатные блокировки собираются атомарно. Таким образом, за исключением быстрых блокировок, каждый менеджер блокировок будет выдавать согласованный набор результатов, но поскольку мы не блокируем оба менеджера блокировок одновременно, блокировки могут быть получены или освобождены после опроса менеджера обычных блокировок и до опроса менеджера предикатных блокировки.

Блокировка менеджера обычных и/или предикатных блокировок может некоторым образом повлиять на производительность базы данных, если очень часто обращаться к этому представлению. Эти блокировки удерживаются не дольше, чем необходимо для получения данных от менеджеров блокировок, но это не до конца исключает возможность влияния на производительность.



pg_matviews

Представление pg_matviews обеспечивает доступ к полезной информации о каждом материализованном представлении в базе данных.

Таблица 13. Столбцы pg_matviews

Столбец Тип
Описание
schemaname name (ссылается на pg_namespace.nspname)
Имя схемы, содержащей материализованное представление
matviewname name (ссылается на pg_class.relname)
Имя материализованного представления
matviewowner name (ссылается на pg_authid.rolname)
Имя владельца материализованного представления
tablespace name (ссылается на pg_tablespace.spcname)
Имя табличного пространства, содержащего материализованное представление (NULL, если это табличное пространство по умолчанию для базы данных)
hasindexes bool
True, если материализованное представление имеет (или недавно имело) какие-либо индексы
ispopulated bool
True, если материализованное представление в настоящий момент заполнено
definition text
Определение материализованного представления (реконструированный запрос SELECT)


pg_policies

Представление pg_policies обеспечивает доступ к полезной информации о каждой политике защиты на уровне строк в базе данных.

Таблица 14. Столбцы pg_policies

Столбец Тип
Описание
schemaname name (ссылается на pg_namespace.nspname)
Имя схемы, содержащей таблицу с этой политикой
tablename name (ссылается на pg_class.relname)
Имя таблицы с этой политикой
policyname name (ссылается на pg_policy.polname)
Имя политики
polpermissive text
Является ли эта политика разрешительной или ограничительной?
roles name[]
Роли, к которым применяется эта политика
cmd text
Тип команд, к которому применяется эта политика
qual text
Выражение, добавляемое к условиям барьера безопасности для запросов, к которым применяется эта политика
with_check text
Выражение, добавляемое к условиям WITH CHECK для запросов, которые пытаются добавить строки в эту таблицу


pg_prepared_statements

В представлении pg_prepared_statements отображаются все подготовленные операторы, доступные в текущем сеансе. Более подробную информацию о подготовленных операторах см. на справочной странице команды PREPARE.

Для каждого подготовленного оператора pg_prepared_statements содержит одну строку. Строки добавляются в представление при создании нового подготовленного оператора и удаляются при освобождении подготовленного оператора (например, с помощью команды DEALLOCATE).

Таблица 15. Столбцы pg_prepared_statements

Столбец Тип
Описание
name text
Идентификатор подготовленного оператора
statement text
Строка запроса, отправленная клиентом для создания этого подготовленного оператора. Для подготовленных операторов, созданных посредством SQL, это оператор PREPARE, предоставленный клиентом. Для подготовленных операторов, созданных посредством клиент-серверного протокола, это текст самого подготовленного оператора.
prepare_time timestamptz
Время, когда был создан подготовленный оператор
parameter_types regtype[]
Ожидаемые типы параметров для подготовленного оператора в виде массива regtype. OID, соответствующий элементу этого массива, можно получить путем приведения значения regtype к типу oid.
from_sql bool
true, если подготовленный оператор был создан посредством команды SQL PREPARE; false, если оператор был подготовлен посредством клиент-серверного протокола
generic_plans int8
Сколько раз был выбран типовой план
custom_plans int8
Сколько раз был выбран пользовательский план

Представление pg_prepared_statements доступно только для чтения.



pg_prepared_xacts

В представлении pg_prepared_xacts отображается информация о транзакциях, которые в настоящее время подготовлены для двухфазной фиксации (подробную информацию см. на справочной странице команды PREPARE TRANSACTION).

Для каждой подготовленной транзакции pg_prepared_xacts содержит одну строку. Запись удаляется при фиксации или откате транзакции.

Таблица 16. Столбцы pg_prepared_xacts

Столбец Тип
Описание
transaction xid
Числовой идентификатор подготовленной транзакции
gid text
Глобальный идентификатор транзакции, который был присвоен транзакции
prepared timestamptz
Время, когда транзакция была подготовлена к фиксации
owner name (ссылается на pg_authid.rolname)
Имя пользователя, выполнившего транзакцию
database name (ссылается на pg_database.datname)
Имя базы данных, в которой была выполнена транзакция

При обращении к представлению pg_prepared_xacts внутренние структуры данных менеджера транзакций на мгновение блокируются, и создается копия для отображения в представлении. Это гарантирует, что представление выдает согласованный набор результатов, не блокируя при этом обычные операции дольше необходимого. Тем не менее при частых обращениях к этому представлению это может некоторым образом повлиять на производительность базы данных.



pg_publication_tables

В представлении pg_publication_tables выводится информация о сопоставлении публикаций и информации о таблицах, которые они содержат. В отличие от нижележащего каталога pg_publication_rel, это представление расширяет список публикаций, определенных как FOR ALL TABLES и FOR TABLES IN SCHEMA, поэтому для таких публикаций здесь будет фигурировать строка для каждой подходящей таблицы.

Таблица 17. Столбцы pg_publication_tables

Столбец Тип
Описание
pubname name (ссылается на pg_publication.pubname)
Имя публикации
schemaname name (ссылается на pg_namespace.nspname)
Имя схемы, содержащей таблицу
tablename name (ссылается на pg_class.relname)
Имя таблицы
schemaname name[] (ссылается на pg_attribute.attname)
Имена столбцов таблицы, включенных в публикацию. Если пользователь не указывает список столбцов таблицы, здесь перечисляются все ее столбцы
rowfilter text
Выражение для условия, ограничивающего публикацию таблицы


pg_replication_origin_status

В представлении pg_replication_origin_status содержится информация о прогрессе воспроизведения записей репликации, достигнутом для определенного источника. Подробную информацию об источниках репликации см. в главе Отслеживание прогресса репликации.

Таблица 18. Столбцы pg_replication_origin_status

Столбец Тип
Описание
local_id oid (ссылается на pg_replication_origin.roident)
Внутренний идентификатор узла
external_id text (ссылается на pg_replication_origin.roname)
Внешний идентификатор узла
remote_lsn pg_lsn
LSN исходного узла, до которого были реплицированы данные.
local_lsn pg_lsn
LSN этого узла, в котором был реплицирован remote_lsn. Используется при асинхронной фиксации для сброса записей фиксации на диск перед сохранением данных.


pg_replication_slots

В представлении pg_replication_slots выводится список всех слотов репликации, которые в настоящее время существуют в кластере баз данных, а также их текущее состояние.

Подробную информацию о слотах репликации см. в подразделе Слоты репликации и главе Логическое декодирование.

Таблица 19. Столбцы pg_replication_slots

Столбец Тип
Описание
slot_name name
Уникальный на уровне кластера идентификатор для слота репликации
plugin name (ссылается на pg_database.oid)
Базовое имя разделяемого объекта, который содержит плагин вывода, используемого этим логическим слотом, или NULL для физических слотов.
slot_type text
Тип слота: physical (физический) или logical (логический)
datoid oid (ссылается на pg_database.oid)
OID базы данных, с которой связан этот слот, или NULL. Только логические слоты могут иметь связанную базу данных.
database text (ссылается на pg_database.datname)
Имя базы данных, с которой связан этот слот, или NULL. Только логические слоты могут иметь связанную базу данных.
temporary bool
True, если это слот временной репликации. Временные слоты не сохраняются на диске и автоматически удаляются при ошибке или по завершении сеанса.
active bool
True, если этот слот в настоящий момент активно используется
active_pid int4
Идентификатор процесса сеанса, использующего этот слот, если тот в настоящий момент активно используется. NULL, если слот неактивен.
xmin xid
Старейшая транзакция, которую должна сохранить база данных для этого слота. Команда VACUUM не может убрать кортежи, удаленные более поздними транзакциями.
catalog_xmin xid
Старейшая транзакция, влияющая на системные каталоги, которую должна сохранить база данных для этого слота. Команда VACUUM не сможет убрать кортежи каталогов, удаленные более поздними транзакциями.
restart_lsn pg_lsn
Адрес (LSN) старейшей записи в WAL, которая все еще может понадобиться пользователю этого слота и поэтому не будет автоматически удаляться во время контрольных точек, если только этот LSN не отстает более чем на max_slot_wal_keep_size от текущего. NULL, если LSN этого слота никогда не был зарезервирован.
confirmed_flush_lsn pg_lsn
Адрес (LSN), до которого потребитель логического слота подтвердил получение данных. Данные старше этого LSN уже не доступны. NULL для физических слотов.
wal_status text
Состояние файлов WAL, затребованных этим слотом. Возможные значения:
  • reserved (резерв) означает, что объем затребованных файлов не выходит за пределы max_wal_size.
  • extended (превышение) означает, что предел max_wal_size превышен, но файлы все еще сохраняются благодаря либо слоту репликации, либо тому, что не превышают wal_keep_size.
  • unreserved (нет резерва) означает, что слот больше не сохраняет требуемые файлы WAL и некоторые из них будут удалены при следующей контрольной точке. Это состояние может смениться на reserved или extended.
  • lost (потеря) означает, что какие-то из требуемых файлов WAL были удалены и данный слот уже нельзя использовать.
Последние два значения можно увидеть только при неотрицательном значении max_slot_wal_keep_size. Если restart_lsn содержит NULL, это поле тоже содержит NULL.
safe_wal_size int8
Объем в байтах, который может быть записан в WAL, чтобы этому слоту не грозила опасность оказаться в состоянии «lost». Для потерянных слотов, а также при max_slot_wal_keep_size равном -1 это поле содержит NULL.
two_phase bool
True, если этот слот задействован в декодировании подготовленных транзакций. Всегда false для физических слотов.


pg_roles

Представление pg_roles обеспечивает доступ к информации о ролях в базах данных. Это просто доступное для всех представление каталоге pg_authid, в котором прикрыто поле пароля.

Таблица 20. Столбцы pg_roles

Столбец Тип
Описание
rolname name
Имя роли
rolsuper bool
Роль обладает правами суперпользователя
rolinherit bool
Роль автоматически наследует права ролей, членом которых является
rolcreaterole bool
Роль может создавать другие роли
rolcreatedb bool
Роль может создавать базы данных
rolcanlogin bool
Роль может начинать сеанс. То есть эта роль может быть задана в качестве начального идентификатора авторизации сеанса
rolreplication bool
Роль является ролью репликации. Роль репликации может инициировать подключения репликации и создавать и удалять слоты репликации.
rolconnlimit int4
Для ролей, которые могут начинать сеанс, этот столбец устанавливает максимальное число одновременных подключений, которые может создать эта роль. -1 означает отсутствие ограничений.
rolpassword text
Не пароль (всегда читается как ********)
rolvaliduntil timestamptz
Срок действия пароля (используется только для аутентификации по паролю); NULL, если срок действия не ограничен
rolbypassrls bool
Роль обходит любую политику защиты на уровне строк; подробную информацию см. в разделе Политики защиты строк.
rolconfig text[]
Специфичные для роли значения по умолчанию переменных конфигурации времени выполнения
oid oid (ссылается на pg_authid.oid)
Идентификатор роли


pg_rules

Представление pg_rules обеспечивает доступ к полезной информации о правилах перезаписи запросов.

Таблица 21. Столбцы pg_rules

Столбец Тип
Описание
schemaname name (ссылается на pg_namespace.nspname)
Имя схемы, содержащей таблицу
tablename name (ссылается на pg_class.relname)
Имя таблицы, для которой предназначено это правило
rulename name (ссылается на pg_rewrite.rulename)
Имя правила
definition text
Определение правила (реконструированная команда создания)

Из представления pg_rules исключены правила ON SELECT для представлений и материализованных представлений; их можно найти в представлениях pg_views и pg_matviews.



pg_seclabels

Представление pg_seclabels предоставляет информацию о метках безопасности. Это более простая для запросов версия каталога pg_seclabel.

Таблица 22. Столбцы pg_seclabels

Столбец Тип
Описание
objoid oid (ссылается на какой-либо столбец OID)
OID объекта, которому принадлежит эта метка безопасности
classoid oid (ссылается на pg_class.oid)
OID системного каталога, в котором находится этот объект
objsubid int4
Для метки безопасности на столбце таблицы это номер столбца (поля objoid и classoid ссылаются на саму таблицу). Для всех остальных типов объектов этот столбец содержит ноль.
objtype text
Тип объекта, к которому применяется эта метка, в текстовом виде
objnamespace oid (ссылается на pg_namespace.oid)
OID пространства имен для этого объекта, если применимо; иначе NULL
objname text
Имя объекта, к которому применяется эта метка, в текстовом виде
provider text (ссылается на pg_seclabel.provider)
Поставщик меток безопасности, связанный с этой меткой
label text (ссылается на pg_seclabel.label)
Метка безопасности, применяемая к этому объекту


pg_sequences

Представление pg_sequences обеспечивает доступ к полезной информации о каждой последовательности в базе данных.

Таблица 23. Столбцы pg_sequences

Столбец Тип
Описание
schemaname name (ссылается на pg_namespace.nspname)
Имя схемы, содержащей последовательность
sequencename name (ссылается на pg_class.relname)
Имя последовательности
sequenceowner name (ссылается на pg_authid.rolname)
Имя владельца последовательности
data_type regtype (ссылается на pg_type.oid)
Тип данных последовательности
start_value int8
Начальное значение последовательности
min_value int8
Минимальное значение последовательности
max_value int8
Максимальное значение последовательности
increment_by int8
Значение приращения последовательности
cycle bool
Зацикливается ли последовательность
cache_size int8
Размер кэша последовательности
last_value int8
Последнее значение последовательности, записанное на диск. Если используется кэширование, это значение может быть больше, чем последнее значение, полученное из последовательности. Содержит NULL, если последовательность еще не была прочитана. Кроме того, значением будет NULL, если текущий пользователь не имеет для последовательности прав USAGE или SELECT.


pg_settings

Представление pg_setting обеспечивает доступ к параметрам времени выполнения сервера. В сущности это альтернативный интерфейс команд SHOW и SET. Также оно обеспечивает доступ к некоторым фактам о каждом параметре, которые нельзя получить напрямую при помощи команды SHOW, например минимальное и максимальное значения.

Таблица 24. Столбцы pg_settings

Столбец Тип
Описание
name text
Имя параметра конфигурации времени выполнения
setting text
Текущее значение параметра
unit text
Неявно подразумеваемая единица измерения параметра
category text
Логическая группа параметра
short_desc text
Краткое описание параметра
extra_desc text
Дополнительное, более детальное, описание параметра
context text
Контекст, необходимый для установки значения параметра (см. ниже)
vartype text
Тип параметра (bool, enum, integer, real или string)
source text
Источник текущего значения параметра
min_val text
Минимальное допустимое значение параметра (NULL для нечисловых значений)
max_val text
Максимально допустимое значение параметра (NULL для нечисловых значений)
enumvals text[]
Допустимые значения перечислимого параметра (NULL для неперечислимых значений)
boot_val text
Значение параметра, присваиваемое при запуске сервера, если параметр не задан иным образом
reset_val text
Значение, в которое параметр будет сброшен командой RESET в текущем сеансе
sourcefile text
Файл конфигурации, в котором было установлено текущее значение (NULL для значений, полученных не из файлов конфигурации, или при проверке пользователем, который не является ни суперпользователем, ни членом роли pg_read_all_settings); полезно при использовании предписаний include в файлах конфигурации
sourceline int4
Номер строки в файле конфигурации, в которой было задано текущее значение (NULL для значений, полученных не из файлов конфигурации, или при проверке пользователем, который не является ни суперпользователем, ни членом роли pg_read_all_settings).
pending_restart bool
true, если значение было изменено в файле конфигурации, но требуется перезапуск; иначе — false.

Существует несколько возможных значений поля context. В порядке уменьшения сложности изменения параметров это:

internal
Эти параметры нельзя изменить непосредственно; они отражают значения, определенные внутри системы. Некоторые из них можно изменить, пересобрав сервер с другими параметрами конфигурации или изменив параметры, передаваемые в qhb_bootstrap.

qhbmaster
Эти параметры можно применять только при запуске сервера, поэтому любое изменение требует его перезагрузки. Значения для этих параметров обычно хранятся в файле qhb.conf либо передаются в командной строке при запуске сервера. Разумеется, параметры любого из типов context более низкого уровня также можно задать во время запуска сервера.

sighup
Изменения этих параметров можно вносить в qhb.conf без перезагрузки сервера. Если послать в qhbmaster сигнал SIGHUP, тот перечитает qhb.conf и применит изменения. Также qhbmaster перешлет сигнал SIGHUP своим дочерним процессам, чтобы все они приняли новое значение.

superuser-backend
Изменения этих параметров можно вносить в qhb.conf без перезагрузки сервера. Также их можно установить для определенного сеанса в пакете запроса на подключение (например, через переменную среды PGOPTIONS), но только если подключающийся пользователь является суперпользователем. Однако эти параметры никогда не изменяются в сеансе после его запуска. Если вы измените их внутри qhb.conf, отправьте сигнал SIGHUP в qhbmaster, чтобы тот перечитал qhb.conf. Новые значения будут влиять только на сеансы, запускаемые впоследствии.

backend
Изменения этих параметров можно вносить в qhb.conf без перезагрузки сервера. Также их можно установить для определенного сеанса в пакете запроса на подключение (например, через переменную среды PGOPTIONS); любой пользователь может внести такое изменение для своего сеанса. Однако эти параметры никогда не изменяются в сеансе после его запуска. Если вы измените их внутри qhb.conf, отправьте сигнал SIGHUP в qhbmaster, чтобы тот перечитал qhb.conf. Новые значения будут влиять только на сеансы, запускаемые впоследствии.

superuser
Эти параметры можно задать из qhb.conf или в рамках сеанса с помощью команды SET, но только суперпользователи могут изменить их посредством SET. Изменения в qhb.conf будут влиять на существующие сеансы только в том случае, если в них командой SET не были заданы локальные в рамках сеанса значения.

user
Эти параметры можно задать из qhb.conf или в рамках сеанса с помощью команды SET. В рамках сеанса их локальное значение может изменить любой пользователь. Изменения в qhb.conf будут влиять на существующие сеансы только в том случае, если в них командой SET не были заданы локальные в рамках сеанса значения.

Более подробную информацию о различных способах изменения этих параметров см. в разделе Настройка параметров.

В это представление нельзя добавить или удалить строки, но можно изменять их. Команда UPDATE, примененная к строке pg_settings, равнозначна выполнению команды SET для этого именованного параметра. Это изменение влияет только на значение, используемое в текущем сеансе. Если команда UPDATE выполняется в рамках транзакции, которая затем прерывается, эффекты UPDATE пропадают при откате транзакции. После фиксации окружающей транзакции эти эффекты сохранятся до конца сеанса, если только не будут переопределены другой командой UPDATE или SET.

В этом представлении специализированные параметры отображаются, только если обслуживающий процесс, выполняющий запрос, загрузил определяющий их модуль расширения (например, посредством указания в shared_preload_libraries, вызовом в этом расширении функции на C/RUST или при выполнении команды LOAD). К примеру, поскольку модули архивирования обычно загружаются процессом архиватора, а не обычными сеансами, в этом представлении не будут отображаться никакие нестандартные параметры, определенные такими модулями, если только специально не загрузить их в обслуживающий процесс, выполняющий запрос.



pg_shadow

В представлении pg_shadow отображаются свойства всех ролей, которые помечены как rolcanlogin в каталоге pg_authid.

Такое название («тень») обусловлено тем фактом, что эта таблица не должна быть доступна для чтения любому пользователю, поскольку она содержит пароли. Доступным для всех представлением pg_shadow является pg_user, в котором прикрыто поле пароля.

Таблица 25. Столбцы pg_shadow

Столбец Тип
Описание
usename name (ссылается на pg_authid.rolname)
Имя пользователя
usesysid oid (ссылается на pg_authid.oid)
Идентификатор этого пользователя
usecreatedb bool
Пользователь может создавать базы данных
usesuper bool
Пользователь является суперпользователем
userepl bool
Пользователь может инициировать потоковую репликацию и включать и выключать в системе режим резервного копирования.
usebypassrls bool
Пользователь обходит любую политику защиты на уровне строк; подробную информацию см. в разделе Политики защиты строк.
passwd text
Пароль (возможно зашифрованный); NULL, если пароля нет. Подробную информацию о том, как хранятся зашифрованные пароли, см. в описании каталога pg_authid.
valuntil timestamptz
Срок действия пароля (используется только для аутентификации по паролю)
useconfig text[]
Сеансовые значения по умолчанию для переменных конфигурации времени выполнения


pg_shmem_allocations

В представлении pg_shmem_allocations отображаются блоки памяти, выделенные в основном сегменте разделяемой памяти сервера. Сюда входит как память, выделенная самой QHB, так и память, выделенная расширениями с помощью механизмов, описанных в подразделе Разделяемая память и легкие блокировки.

Обратите внимание, что в этом представлении не показываются блоки, выделенные с использованием инфраструктуры динамической разделяемой памяти.

Таблица 26. Столбцы pg_shmem_allocations

Столбец Тип
Описание
name text
Имя блока в разделяемой памяти. NULL для неиспользуемых блоков памяти и <anonymous> для анонимных блоков.
off int8
Смещение, с которого начинается выделенный блок. NULL для анонимных блоков, так как дополнительные сведения о них неизвестны.
size int8
Размер блока
allocated_size int8
Размер блока, включая выравнивающее дополнение. Для анонимных блоков информация о дополнении недоступна, поэтому значения в столбцах size и allocated_size всегда будут равны. Для свободной памяти объем дополнения не имеет смысла, так что в этом случае столбцы тоже будут содержать одинаковые значения.

Анонимными считаются блоки, выделенные непосредственно функцией ShmemAlloc(), а не функцией ShmemInitStruct() или ShmemInitHash().

По умолчанию представление pg_shmem_allocations могут читать только суперпользователи или роли с правами роли pg_read_all_stats.



pg_stats

Представление pg_stats обеспечивает доступ к информации, хранящейся в каталоге pg_statistic. Это представление позволяет получить доступ только к тем строкам pg_statistic, что соответствуют таблицам, которые пользователь может читать, а потому к этому представлению можно без опасений разрешить публичный доступ на чтение.

Также pg_stats предназначено для представления информации в более удобочитаемом формате, чем нижележащий каталог, — за счет того, что схему этого представления необходимо расширять всякий раз, когда для каталога pg_statistic определяются новые типы слотов.

Таблица 27. Столбцы pg_stats

Столбец Тип
Описание
schemaname name (ссылается на pg_namespace.nspname)
Имя схемы, содержащей таблицу
tablename name (ссылается на pg_class.relname)
Имя таблицы
attname name (ссылается на pg_attribute.attname)
Имя столбца, описываемого этой строкой
inherited bool
Если true, то эта строка включает значения из дочерних таблиц иерархии наследования, а не только значения в указанной таблице
null_frac float4
Доля записей столбца, имеющих значение NULL
avg_width int4
Средняя ширина записей столбца в байтах
n_distinct float4
Если больше нуля, то показывает примерное количество уникальных значений в столбце. Если меньше нуля, то модуль числа показывает количество уникальных значений, разделенное на количество строк. (Отрицательная форма используется, когда команда ANALYZE считает, что количество уникальных значений, вероятно, будет увеличиваться по мере роста таблицы; положительная форма используется, когда считается, что столбец имеет фиксированное количество возможных значений.) Например, значение -1 указывает на уникальный столбец, в котором количество уникальных значений совпадает с количеством строк.
most_common_vals anyarray
Список наиболее распространенных значений в столбце. (NULL, если значения, встречающиеся чаще других, не обнаруживаются.)
most_common_freqs float4[]
Список частот наиболее распространенных значений, т. е. количество вхождений каждого значения, деленное на общее количество строк. (NULL, если поле most_common_vals содержит NULL.)
histogram_bounds anyarray
Список значений, разделяющих значения столбца на группы примерно одинаковой популяции. Значения поля most_common_vals, если они присутствуют, исключаются из этого расчета гистограммы. (Этот столбец содержит NULL, если тип данных столбца не имеет оператора < или если список most_common_vals охватывает всю популяцию.)
correlation float4
Статистическая корреляция между физическим порядком строк и логическим порядком значений столбцов. Диапазон допустимых значений: от -1 до +1. Когда значение близко к -1 или +1, сканирование индекса по столбцу будет считаться дешевле, чем когда оно близко к нулю, вследствие уменьшения случайного обращения к диску. (Столбец имеет значение NULL, если тип данных столбца не имеет оператора <.)
most_common_elems anyarray
Список отличных от NULL значений элементов, наиболее часто встречающихся в пределах значений столбца. (NULL для скалярных типов.)
most_common_elem_freqs float4[]
Список частот наиболее распространенных значений элементов, т. е. доля строк, содержащих хотя бы один экземпляр данного значения. За частотами каждого элемента следуют два или три дополнительных значения; это минимум и максимум предыдущих частот каждого элемента и (необязательно) частота элементов NULL. (NULL, если поле most_common_elems содержит NULL.)
elem_count_histogram float4[]
Гистограмма количеств уникальных значений элементов, отличных от NULL, в пределах значений столбца, за которой следует среднее количество различных элементов, отличных от NULL. (NULL для скалярных типов.)

Максимальным количеством записей в полях массива можно управлять на уровне столбцов с помощью команды ALTER TABLE SET STATISTICS или глобально, задавая параметр времени выполнения default_statistics_target.



pg_stats_ext

Представление pg_stats_ext обеспечивает доступ к информации о каждом объекте расширенной статистики в базе данных, сочетая сведения, хранящиеся в каталогах pg_statistic_ext и pg_statistic_ext_data. Это представление дает доступ только к тем строкам этих каталогов, что соответствуют таблицам, которые пользователь может читать, а потому к этому представлению можно без опасений разрешить публичный доступ на чтение.

Также pg_stats_ext предназначено для представления информации в более удобочитаемом формате, чем нижележащие каталоги, — за счет того, что схему этого представления необходимо расширять всякий раз, когда в каталог pg_statistic_ext добавляются новые типы расширенной статистики.

Таблица 28. Столбцы pg_stats_ext

Столбец Тип
Описание
schemaname name (ссылается на pg_namespace.nspname)
Имя схемы, содержащей таблицу
tablename name (ссылается на pg_class.relname)
Имя таблицы
statistics_schemaname name (ссылается на pg_namespace.nspname)
Имя схемы, содержащей объект расширенной статистики
statistics_name name (ссылается на pg_statistic_ext.stxname)
Имя объекта расширенной статистики
statistics_owner oid (ссылается на pg_authid.oid)
Владелец объекта расширенной статистики
attnames name[] (ссылается на pg_attribute.attname)
Имена столбцов, включенных в объект расширенной статистики
exprs text[]
Выражения, включенные в объект расширенной статистики
kinds text[]
Типы объектов расширенной статистики, включенные для этой записи
inherited bool (ссылается на pg_statistic_ext_data.stxdinherit)
Если true, то статистика включает значения из дочерних таблиц иерархии наследования, а не только значения в указанном отношении
n_distinct pg_ndistinct
Количество различных комбинаций значений столбцов. Если больше нуля, то показывает примерное число уникальных значений в комбинации. Если меньше нуля, то модуль числа показывает количество уникальных значений, разделенное на число строк. (Отрицательная форма используется, когда команда ANALYZE считает, что количество уникальных значений, вероятно, будет увеличиваться по мере роста таблицы; положительная форма используется, когда считается, что столбец имеет фиксированное количество возможных значений.) Например, значение -1 указывает на уникальную комбинацию столбцов, в которой количество уникальных комбинаций совпадает с количество строк.
dependencies pg_dependencies
Статистика для функциональной зависимости
most_common_vals text[]
Список наиболее распространенных комбинаций значений в столбцах. (NULL, если комбинации, встречающиеся чаще других, не обнаруживаются.)
most_common_val_nulls bool[]
Список флагов NULL для наиболее распространенных комбинаций значений. (NULL, если поле most_common_vals содержит NULL)
most_common_freqs float8[]
Список частот наиболее распространенных комбинаций, т. е. количество вхождений каждой, деленное на общее количество строк. (NULL, если поле most_common_vals содержит NULL)
most_common_base_freqs float8[]
Список базовых частот наиболее распространенных комбинаций, т. е. произведение частот отдельных значений. (NULL, если поле most_common_vals содержит NULL)

Максимальным количеством записей в полях массива можно управлять на уровне столбцов с помощью команды ALTER TABLE SET STATISTICS или глобально, задав параметр времени выполнения default_statistics_target.



pg_stats_ext_exprs

Представление pg_stats_ext_exprs обеспечивает доступ к информации обо всех выражениях, включенных в объекты расширенной статистики, сочетая сведения, хранящиеся в каталогах pg_statistic_ext и pg_statistic_ext_data. Это представление дает доступ только к тем строкам этих каталогов, что соответствуют таблицам, которые пользователю разрешено читать, а потому к этому представлению можно без опасений разрешить публичный доступ на чтение.

Также pg_stats_ext_exprs предназначено для представления информации в более удобочитаемом формате, чем нижележащие каталоги, — за счет того, что схему этого представления необходимо расширять всякий раз, когда изменяется структура статистики в каталоге pg_statistic_ext.

Таблица 29. Столбцы pg_stats_ext_exprs

Столбец Тип
Описание
schemaname name (ссылается на pg_namespace.nspname)
Имя схемы, содержащей таблицу
tablename name (ссылается на pg_class.relname)
Имя таблицы, для которой определен объект статистики
statistics_schemaname name (ссылается на pg_namespace.nspname)
Имя схемы, содержащей объект расширенной статистики
statistics_name name (ссылается на pg_statistic_ext.stxname)
Имя объекта расширенной статистики
statistics_owner oid (ссылается на pg_authid.oid)
Владелец объекта расширенной статистики
expr text
Выражение, включенное в объект расширенной статистики
inherited bool (ссылается на pg_statistic_ext_data.stxdinherit)
Если true, то статистика включает значения из дочерних таблиц иерархии наследования, а не только значения в указанном отношении
null_frac float4
Доля записей выражения, содержащих NULL
avg_width int4
Средний размер записей выражения в байтах
n_distinct float4
Если больше нуля, то показывает примерное число уникальных значений в выражении. Если меньше нуля, то модуль числа показывает количество уникальных значений, разделенное на число строк. (Отрицательная форма используется, когда команда ANALYZE считает, что количество уникальных значений, вероятно, будет увеличиваться по мере роста таблицы; положительная форма используется, когда считается, что выражение имеет фиксированное количество возможных значений.) Например, значение -1 указывает на уникальное выражение, в котором количество уникальных значений совпадает с количество строк.
most_common_vals anyarray
Список наиболее распространенных значений в выражении. (NULL, если значения, встречающиеся чаще других, не обнаруживаются.)
most_common_freqs float4[]
Список частот наиболее распространенных значений, т. е. число их вхождений, разделенное на общее число строк. (NULL, если поле most_common_vals содержит NULL.)
histogram_bounds anyarray
Список значений, разделяющих значения выражения на группы примерно одинаковой популяции. Значения поля most_common_vals, если они присутствуют, исключаются из этого расчета гистограммы. (Это выражение содержит NULL, если тип данных выражения не имеет оператора < или если список most_common_vals охватывает всю популяцию.)
correlation float4
Статистическая корреляция между физическим порядком строк и логическим порядком значений выражения. Диапазон допустимых значений: от -1 до +1. Когда значение близко к -1 или +1, сканирование индекса по выражению будет считаться дешевле, чем когда это значение близко к нулю, вследствие уменьшения случайного обращения к диску. (Это выражение содержит NULL, если тип данных выражения не имеет оператора <.)
most_common_elems anyarray
Список элементов, отличных от NULL, наиболее часто встречающихся в значениях выражения. (NULL для скалярных типов.)
most_common_elem_freqs float4[]
Список частот наиболее распространенных элементов, т. е. доля строк, содержащих как минимум одно вхождение данного значения. За частотами по элементам следуют два или три дополнительных значения: минимум и максимум предшествующих частот по элементам и, при необходимости, частота элементов NULL. (NULL, если поле most_common_elems содержит NULL.)
elem_count_histogram float4[]
Гистограмма количеств различных элементов, отличных от NULL, в значениях выражения, за которой следует среднее количество элементов, отличных от NULL. (NULL для скалярных типов.)

Максимальным количеством записей в полях-массивах можно управлять на уровне столбцов с помощью команды ALTER TABLE SET STATISTICS или глобально, установив параметр времени выполнения default_statistics_target.



pg_tables

Представление pg_tables обеспечивает доступ к полезной информации о каждой таблице в базе данных.

Таблица 30. Столбцы pg_tables

Столбец Тип
Описание
schemaname name (ссылается на pg_namespace.nspname)
Имя схемы, содержащей таблицу
tablename name (ссылается на pg_class.relname)
Имя таблицы
tableowner name (ссылается на pg_authid.rolname)
Имя владельца таблицы
tablespace name[] (ссылается на pg_tablespace.spcname)
Имя табличного пространства, содержащего таблицу (NULL, если это табличное пространство по умолчанию для базы данных)
hasindexes bool (ссылается на pg_class.relhasindex)
True, если таблица имеет (или недавно имела) какие-либо индексы
hasrules bool (ссылается на pg_class.relhasrules)
True, если таблица имеет (или когда-то имела) правила
hastriggers bool (ссылается на pg_class.relhastriggers)
True, если таблица имеет (или когда-то имела) триггеры
rowsecurity bool (ссылается на pg_class.relrowsecurity)
True, если в таблице включена защита на уровне строк


pg_timezone_abbrevs

Представление pg_timezone_abbrevs содержит список аббревиатур часовых поясов, которые в настоящее время верно распознаются функциями ввода даты/времени. Содержимое этого представления меняется при изменении параметра времени выполнения timezone_abbreviations.

Таблица 31. Столбцы pg_timezone_abbrevs

Столбец Тип
Описание
abbrev text
Аббревиатура часового пояса
utc_offset interval
Смещение от UTC (положительное значение означает к востоку от Гринвича)
is_dst bool
True, если это аббревиатура летнего времени

Хотя большинство аббревиатур часовых поясов представляют собой фиксированные смещения от UTC, в некоторых поясах значение смещения менялось в ходе истории (подробную информацию см. в разделе Файлы конфигурации даты/времени). В таких случаях это представление отображает их текущее значение.



pg_timezone_names

Представление pg_timezone_names содержит список имен часовых поясов, которые распознаются командой SET TIMEZONE, а также связанные с ними аббревиатуры, смещения UTC и статус летнего времени. (Технически QHB не использует UTC, потому что високосные секунды не обрабатываются). В отличие от сокращений, отображенных в представлении pg_timezone_abbrevs, многие из этих имен подразумевают набор правил перехода на летнее время. Поэтому связанная информация изменяется при пересечении локальных границ перехода на летнее время. Отображаемая информация вычисляется на основе текущего значения функции CURRENT_TIMESTAMP.

Таблица 32. Столбцы pg_timezone_names

Столбец Тип
Описание
name text
Название часового пояса
abbrev text
Аббревиатура часового пояса
utc_offset interval
Смещение от UTC (положительное значение означает к востоку от Гринвича)
is_dst bool
True, если в данный момент установлено летнее время


pg_user

Представление pg_user обеспечивает доступ к информации о пользователях базы данных. Это просто общедоступное представление каталога pg_shadow, в котором прикрыто поле пароля.

Таблица 33. Столбцы pg_user

Столбец Тип
Описание
usename name
Имя пользователя
usesysid oid
Идентификатор этого пользователя
usecreatedb bool
Пользователь может создавать базы данных
usesuper bool
Пользователь является суперпользователем
userepl bool
Пользователь может инициировать потоковую репликацию и включать и выключать режим резервного копирования в системе.
usebypassrls bool
Пользователь обходит каждую политику защиты на уровне строк; подробную информацию см. в разделе Политики защиты строк.
passwd text
Не пароль (всегда читается как ********)
valuntil timestamptz
Срок действия пароля (используется только при аутентификации по паролю)
useconfig text[]
Сеансовые значения по умолчанию для переменных конфигурации времени выполнения


pg_user_mappings

Представление pg_user_mappings обеспечивает доступ к информации о сопоставлениях пользователей. По сути это общедоступное представление каталога pg_user_mapping, которое не показывает поле параметров, если у пользователя нет прав на его использование.

Таблица 34. Столбцы pg_user_mappings

Столбец Тип
Описание
umid oid (ссылается на pg_user_mapping.oid)
OID сопоставления пользователей
srvid oid (ссылается на pg_foreign_server.oid)
OID стороннего сервера, содержащего это сопоставление
srvname name (ссылается на pg_foreign_server.srvname)
Имя стороннего сервера
umuser oid (ссылается на pg_authid.oid)
OID сопоставляемой локальной роли или ноль, если сопоставление пользователей задается для всех
usename name
Имя локального пользователя для сопоставления
umoptions text[]
Специфические параметры сопоставления пользователей в виде строк «ключ=значение»

Чтобы защитить информацию о пароле, сохраненную в качестве параметра сопоставления пользователей, столбец umoptions будет считываться как NULL, если не выполняется одно из следующих условий:

  • текущий пользователь является сопоставляемым пользователем, который владеет сервером или имеет для него право USAGE

  • текущий пользователь является владельцем сервера и прочитывается сопоставление для PUBLIC

  • текущий пользователь является суперпользователем



pg_views

Представление pg_views обеспечивает доступ к полезной информации о каждом представлении в базе данных.

Таблица 35. Столбцы pg_views

Столбец Тип
Описание
schemaname name (ссылается на pg_namespace.nspname)
Имя схемы, содержащей представление
viewname name (ссылается на pg_class.relname)
Имя представления
viewowner name (ссылается на pg_authid.rolname)
Имя владельца представления
definition text
Определение представления (реконструированный запрос SELECT)