19.11. Параметры подключения клиента#

19.11. Параметры подключения клиента

19.11. Параметры подключения клиента

19.11.1. Поведение оператора

client_min_messages (enum)

Управляет тем, какие уровни сообщений отправляются клиенту. Допустимые значения: DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, LOG, NOTICE, WARNING, и ERROR. Каждый уровень включает все уровни, следующие за ним. Чем позже уровень, тем меньше сообщений отправляется. По умолчанию используется значение NOTICE. Обратите внимание, что здесь уровень LOG имеет другой ранг, чем в log_min_messages.

Сообщения уровня INFO всегда отправляются клиенту.

search_path (string)

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

Значение для search_path должно быть списком имен схем, разделенных запятыми. Любое имя, которое не является существующей схемой или схемой, для которой у пользователя нет разрешения USAGE, будет молча проигнорировано.

Если одним из элементов списка является специальное имя $user, то схема с именем, возвращаемым функцией CURRENT_USER, заменяется, если такая схема существует и у пользователя есть разрешение USAGE для нее. (В противном случае $user игнорируется).

Схема системного каталога pg_catalog всегда ищется, независимо от того, упоминается ли она в пути или нет. Если она упоминается в пути, то она будет искаться в указанном порядке. Если pg_catalog не находится в пути, то она будет искаться до поиска любого из элементов пути.

Аналогично, схема временных таблиц текущей сессии, pg_temp_nnn, всегда ищется, если она существует. Ее можно явно указать в пути, используя псевдоним pg_temp . Если он не указан в пути, то он ищется первым (даже перед pg_catalog). Однако, временная схема ищется только для имен отношений (таблиц, представлений, последовательностей и т. д.) и типов данных. Она никогда не ищется для имен функций или операторов.

Когда объекты создаются без указания конкретной целевой схемы, они будут размещены в первой допустимой схеме, указанной в переменной search_path. Если поисковый путь пуст, будет выдана ошибка.

Значение по умолчанию для этого параметра - "$user", public. Эта настройка поддерживает общее использование базы данных (когда у пользователей нет личных схем и все используют public), личные схемы для каждого пользователя и их комбинации. Другие эффекты можно получить, изменяя настройку пути поиска по умолчанию, как глобально, так и для каждого пользователя.

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

Текущее действующее значение поискового пути можно проверить с помощью функции SQL current_schemas (см. Раздел 9.26). Это не совсем то же самое, что и проверка значения search_path, поскольку current_schemas показывает, как были разрешены элементы, появляющиеся в search_path.

row_security (boolean)

Эта переменная определяет, будет ли возникать ошибка вместо применения политики безопасности строк. Когда установлено значение on, политики применяются нормально. Когда установлено значение off, запросы, которые в противном случае применяли бы хотя бы одну политику, завершаются с ошибкой. Значение по умолчанию - on. Измените на off, если ограниченная видимость строк может вызвать некорректные результаты; например, pg_dump делает это изменение по умолчанию. Эта переменная не влияет на роли, которые обходят каждую политику безопасности строк, а именно, суперпользователей и роли с атрибутом BYPASSRLS.

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

default_table_access_method (string)

Этот параметр определяет метод доступа к таблице по умолчанию, который будет использоваться при создании таблиц или материализованных представлений, если команда CREATE не указывает явно метод доступа, или при использовании команды SELECT ... INTO, которая не позволяет указывать метод доступа к таблице. По умолчанию используется метод heap.

default_tablespace (string)

Эта переменная определяет таблицу по умолчанию, в которой создаются объекты (таблицы и индексы), когда команда CREATE не указывает явно таблицу.

Значение может быть либо именем табличного пространства, либо пустой строкой, чтобы указать использование табличного пространства по умолчанию текущей базы данных. Если значение не соответствует ни одному существующему табличному пространству, Tantor SE автоматически будет использовать табличное пространство по умолчанию текущей базы данных. Если указано нестандартное табличное пространство, пользователь должен иметь привилегию CREATE для него, иначе попытки создания будут неудачными.

Эта переменная не используется для временных таблиц; для них вместо этого используется temp_tablespaces.

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

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

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

default_toast_compression (enum)

Эта переменная устанавливает метод сжатия по умолчанию TOAST для значений сжимаемых столбцов. (Это можно переопределить для отдельных столбцов, установив опцию столбца COMPRESSION в командах CREATE TABLE или ALTER TABLE). Поддерживаемые методы сжатия - pglz и (если Tantor SEбыл скомпилирован с опцией --with-lz4) lz4. По умолчанию используется pglz.

temp_tablespaces (string)

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

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

Когда temp_tablespaces установлено интерактивно, указание несуществующего табличного пространства является ошибкой, также как и указание табличного пространства, для которого у пользователя нет привилегии CREATE. Однако, при использовании ранее установленного значения, несуществующие табличные пространства игнорируются, также как и табличные пространства, для которых у пользователя нет привилегии CREATE. В частности, это правило применяется при использовании значения, установленного в postgresql.conf.

Значение по умолчанию - пустая строка, что приводит к созданию всех временных объектов в таблице по умолчанию текущей базы данных.

См. также default_tablespace.

check_function_bodies (boolean)

Этот параметр обычно включен. Когда он установлен в off, он отключает проверку строки тела процедуры во время CREATE FUNCTION и CREATE PROCEDURE. Отключение проверки позволяет избежать побочных эффектов процесса проверки, в частности, предотвращает ложные срабатывания из-за проблем, таких как обратные ссылки. Установите этот параметр в off перед загрузкой функций от имени других пользователей; pg_dump делает это автоматически.

default_transaction_isolation (enum)

Каждая SQL-транзакция имеет уровень изоляции, который может быть либо read uncommitted, read committed, repeatable read или serializable. Этот параметр контролирует уровень изоляции по умолчанию для каждой новой транзакции. По умолчанию используется уровень изоляции read committed.

См. Глава 13 и SET TRANSACTION для получения дополнительной информации.

default_transaction_read_only (boolean)

Транзакция SQL только для чтения не может изменять не временные таблицы. Этот параметр управляет статусом только для чтения по умолчанию для каждой новой транзакции. По умолчанию установлено значение off (чтение/запись).

См. SET TRANSACTION для получения дополнительной информации.

default_transaction_deferrable (boolean)

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

Этот параметр управляет статусом отложенности по умолчанию для каждой новой транзакции. В настоящее время он не влияет на транзакции чтения-записи или на те, которые работают на уровнях изоляции ниже serializable. Значение по умолчанию - off.

См. SET TRANSACTION для получения дополнительной информации.

transaction_isolation (enum)

Этот параметр отражает уровень изоляции текущей транзакции. В начале каждой транзакции он устанавливается в текущее значение default_transaction_isolation. Любая последующая попытка изменить его эквивалентна команде SET TRANSACTION.

transaction_read_only (boolean)

Этот параметр отражает текущий режим только для чтения транзакции. В начале каждой транзакции он устанавливается в текущее значение default_transaction_read_only. Любая последующая попытка изменить его эквивалентна команде SET TRANSACTION.

transaction_deferrable (boolean)

Этот параметр отражает текущий статус отложенности транзакции. В начале каждой транзакции он устанавливается в текущее значение default_transaction_deferrable. Любая последующая попытка изменить его эквивалентна команде SET TRANSACTION.

session_replication_role (enum)

Управляет срабатыванием триггеров и правил, связанных с репликацией, для текущей сессии. Возможные значения: origin (по умолчанию), replica и local. Установка этого параметра приводит к удалению ранее кешированных планов запросов. Изменить этот параметр могут только суперпользователи и пользователи с соответствующими привилегиями SET.

Намеренное использование этой настройки заключается в том, что системы логической репликации устанавливают ее в значение replica при применении реплицированных изменений. В результате триггеры и правила (которые не были изменены относительно своей конфигурации по умолчанию) не будут срабатывать на реплике. Дополнительную информацию см. в разделах ALTER TABLE с ключевыми словами ENABLE TRIGGER и ENABLE RULE.

PostgreSQL обрабатывает настройки origin и local одинаково внутренне. Сторонние системы репликации могут использовать эти два значения для своих внутренних целей, например, использовать local для обозначения сессии, изменения которого не должны быть тиражированы.

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

statement_timeout (integer)

Прервать выполнение любого оператора, который занимает больше указанного времени. Если значение log_min_error_statement установлено на ERROR или ниже, то также будет записано в журнале сообщение об операторе, который превысил временный тайм-аут. Если значение указано без единиц измерения, оно считается в миллисекундах. Значение ноль (по умолчанию) отключает ограничение по времени.

Тайм-аут измеряется с момента поступления команды на сервер до ее завершения сервером. Если в одном простом сообщении SQL содержится несколько SQL-операторов, тайм-аут применяется к каждому оператору отдельно. (В версиях PostgreSQL до 13 тайм-аут обычно применялся ко всей строке запроса.) В расширенном протоколе запросов тайм-аут начинает отсчет при поступлении любого сообщения, связанного с запросом (Parse, Bind, Execute, Describe), и отменяется при завершении сообщения Execute или Sync.

Следует избегать установки параметра statement_timeout в файле postgresql.conf, так как это повлияет на все сессии.

transaction_timeout (integer)

Отмените любую транзакцию, которая длится дольше указанного времени. Ограничение применяется как к явным транзакциям (начинающимся с BEGIN), так и к неявно начатым транзакциям, соответствующим отдельному оператору. Если это значение указано без единиц измерения, оно считается в миллисекундах. Значение нуль (по умолчанию) отключает тайм-аут.

Установка параметра transaction_timeout в файле postgresql.conf не рекомендуется, поскольку это повлияет на все сессии.

lock_timeout (integer)

Прерывает выполнение любого оператора, который ожидает дольше указанного времени при попытке получить блокировку на таблицу, индекс, строку или другой объект базы данных. Ограничение времени применяется отдельно к каждой попытке получения блокировки. Ограничение применяется как к явным запросам блокировки (например, LOCK TABLE или SELECT FOR UPDATE без NOWAIT), так и к неявно полученным блокировкам. Если это значение указано без единиц измерения, оно считается в миллисекундах. Значение нуль (по умолчанию) отключает тайм-аут.

В отличие от statement_timeout, этот временный тайм-аут может возникнуть только при ожидании блокировок. Обратите внимание, что если statement_timeout не равно нулю, то нет смысла устанавливать lock_timeout в то же значение или большее, поскольку срабатывает всегда сначала временный тайм-аут оператора. Если log_min_error_statement установлено в ERROR или ниже, то будет зарегистрирован оператор, который превысил временный тайм-аут.

Установка параметра lock_timeout в файле postgresql.conf не рекомендуется, поскольку это повлияет на все сессии.

idle_in_transaction_session_timeout (integer)

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

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

idle_session_timeout (integer)

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

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

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

vacuum_freeze_table_age (integer)

VACUUM выполняет агрессивное сканирование, если поле relfrozenxid таблицы pg_class достигло возраста, указанного в этом параметре. Агрессивное сканирование отличается от обычного VACUUM тем, что оно посещает каждую страницу, которая может содержать незамороженные XID или MXID, а не только те, которые могут содержать мертвые кортежи. Значение по умолчанию - 150 миллионов транзакций. Хотя пользователи могут установить это значение от нуля до двух миллиардов, VACUUM автоматически ограничивает эффективное значение до 95% от autovacuum_freeze_max_age, чтобы периодическая операция VACUUM в ручном режиме могла выполниться перед запуском автоматической операции VACUUM для предотвращения зацикливания. Дополнительную информацию см. в разделе Раздел 24.1.5.

vacuum_freeze_min_age (integer)

Определяет возраст (в транзакциях), после которого VACUUM должен принять решение о замораживании версий строк при сканировании таблицы. По умолчанию значение составляет 50 миллионов транзакций. Хотя пользователи могут установить это значение в диапазоне от нуля до одного миллиарда, VACUUM автоматически ограничивает эффективное значение половиной значения autovacuum_freeze_max_age, чтобы время между принудительными операциями автоочистки не было слишком коротким. Дополнительную информацию см. в разделе Раздел 24.1.5.

vacuum_failsafe_age (integer)

Определяет максимальный возраст (в транзакциях), который может достигнуть поле relfrozenxid таблицы pg_class перед тем, как VACUUM предпримет чрезвычайные меры для предотвращения сбоя системы из-за зацикливания идентификаторов транзакций. Это стратегия последнего шанса для VACUUM. Обычно срабатывает аварийная защита, когда автоматическая очистка для предотвращения переполнения идентификаторов транзакций уже работает некоторое время, хотя возможно, что аварийная защита может сработать в любой момент VACUUM.

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

По умолчанию установлено 1,6 миллиарда транзакций. Хотя пользователи могут установить это значение в любое число от нуля до 2,1 миллиарда, VACUUM автоматически скорректирует эффективное значение, чтобы оно не было меньше чем 105% от autovacuum_freeze_max_age.

vacuum_multixact_freeze_table_age (integer)

VACUUM выполняет агрессивное сканирование, если поле relminmxid таблицы pg_class достигло возраста, указанного в этом параметре. Агрессивное сканирование отличается от обычного VACUUM тем, что оно посещает каждую страницу, которая может содержать незамороженные XID или MXID, а не только те, которые могут содержать мертвые кортежи. Значение по умолчанию - 150 миллионов мультитранзакций. Хотя пользователи могут установить это значение от нуля до двух миллиардов, VACUUM автоматически ограничивает эффективное значение до 95% от значения autovacuum_multixact_freeze_max_age, чтобы периодическая операция VACUUM в ручном режиме могла выполниться перед запуском команды, предотвращающей зацикливание, для таблицы. Дополнительную информацию см. в разделе Раздел 24.1.5.1.

vacuum_multixact_freeze_min_age (integer)

Определяет возраст отсечения (в мультитранзакциях), который VACUUM должен использовать для принятия решения о замене идентификаторов мультитранзакций на более новый идентификатор транзакции или мультитранзакции при сканировании таблицы. По умолчанию это 5 миллионов мультитранзакций. Хотя пользователи могут установить это значение от нуля до одного миллиарда, VACUUM будет молча ограничивать эффективное значение половиной значения autovacuum_multixact_freeze_max_age, чтобы не было неразумно короткого времени между принудительными операциями автоочистки. Дополнительную информацию см. в разделе Раздел 24.1.5.1.

vacuum_multixact_failsafe_age (integer)

Определяет максимальный возраст (в мультитранзакциях), который может достигнуть поле relminmxid таблицы pg_class перед тем, как VACUUM предпримет чрезвычайные меры для предотвращения сбоя системы из-за зацикливания идентификаторов мультитранзакций. Это стратегия последнего шанса для VACUUM. Обычно срабатывает аварийная защита, когда автоочистка уже некоторое время работает для предотвращения переполнения идентификаторов транзакций, хотя возможно срабатывание аварийной защиты в любом VACUUM.

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

По умолчанию установлено значение 1,6 миллиардов мультитранзакций. Хотя пользователи могут установить любое значение от нуля до 2,1 миллиарда, VACUUM автоматически скорректирует эффективное значение, чтобы оно не было меньше чем 105% от autovacuum_multixact_freeze_max_age.

bytea_output (enum)

Устанавливает формат вывода для значений типа bytea. Допустимые значения: hex (по умолчанию) и escape (традиционный формат PostgreSQL). См. Раздел 8.4 для получения дополнительной информации. Тип bytea всегда принимает оба формата при вводе, независимо от этой настройки.

xmlbinary (enum)

Устанавливает способ кодирования двоичных значений в XML. Это применяется, например, когда значения типа bytea преобразуются в XML с помощью функций xmlelement или xmlforest. Возможные значения: base64 и hex, которые оба определены в стандарте XML Schema. По умолчанию используется значение base64. Дополнительную информацию о функциях, связанных с XML, см. в разделе Раздел 9.15.

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

xmloption (enum)

Устанавливает, является ли DOCUMENT или CONTENT неявным при преобразовании между XML и символьными строковыми значениями. См. Раздел 8.13 для описания этого. Допустимые значения: DOCUMENT и CONTENT. По умолчанию используется значение CONTENT.

Согласно стандарту SQL, команда для установки этой опции -

SET XML OPTION { DOCUMENT | CONTENT };

Этот синтаксис также доступен в PostgreSQL.

gin_pending_list_limit (integer)

Устанавливает максимальный размер списка ожидающих операций индекса GIN, который используется, когда включена опция fastupdate. Если список превышает этот максимальный размер, он очищается путем перемещения записей из него в основную структуру данных индекса GIN пакетно. Если это значение указано без единиц измерения, оно считается в килобайтах. По умолчанию установлено четыре мегабайта (4MB). Это значение можно переопределить для отдельных индексов GIN, изменив параметры хранения индекса. Дополнительную информацию см. в разделах Раздел 68.4.1 и Раздел 68.5.

19.11.2. Локализация и форматирование

DateStyle (string)

Устанавливает формат отображения значений даты и времени, а также правила для интерпретации неоднозначных значений ввода даты. По историческим причинам эта переменная содержит две независимые компоненты: спецификацию формата вывода (ISO, Postgres, SQL, или German) и спецификацию ввода/вывода для упорядочивания год/месяц/день (DMY, MDY, или YMD). Эти компоненты могут быть установлены отдельно или вместе. Ключевые слова Euro b European являются синонимами для DMY; ключевые слова US, NonEuro и NonEuropean являются синонимами для MDY. Дополнительную информацию см. в разделе Раздел 8.5. Встроенное значение по умолчанию - ISO, MDY, но initdb инициализирует файл конфигурации настройкой, соответствующей поведению выбранной локали lc_time.

IntervalStyle (enum)

Устанавливает формат отображения значений интервалов. Значение sql_standard будет производить вывод, соответствующий стандартным литералам интервалов SQL. Значение postgres (которое является значением по умолчанию) будет производить вывод, соответствующий версиям Tantor SE до 8.4, когда параметр DateStyle был установлен в значение ISO. Значение postgres_verbose будет производить вывод, соответствующий версиям Tantor SE до 8.4, когда параметр DateStyle был установлен в значение, отличное от ISO. Значение iso_8601 будет производить вывод, соответствующий формату интервала времени с указателями, определенному в разделе 4.4.3.2 стандарта ISO 8601.

Параметр IntervalStyle также влияет на интерпретацию неоднозначного ввода интервала. См. Раздел 8.5.4 для получения дополнительной информации.

TimeZone (string)

Устанавливает часовой пояс для отображения и интерпретации временных меток. Встроенное значение по умолчанию - GMT, но обычно оно переопределяется в postgresql.conf; initdb установит соответствующую настройку в соответствии с системной средой. См. Раздел 8.5.3 для получения дополнительной информации.

timezone_abbreviations (string)

Устанавливает набор сокращений часовых поясов, которые будут приниматься сервером для ввода даты и времени. По умолчанию используется значение 'Default', которое работает в большинстве стран мира. Также доступны наборы 'Australia' и 'India', а также другие наборы, которые могут быть определены для конкретной установки. Дополнительную информацию см. в разделе Раздел B.4.

extra_float_digits (integer)

Этот параметр позволяет настроить количество цифр, используемых для текстового вывода значений с плавающей точкой, включая float4, float8, и геометрические типы данных.

Если значение равно 1 (по умолчанию) или больше, то значения с плавающей точкой выводятся в кратчайшем и точном формате; см. Раздел 8.1.3. Фактическое количество сгенерированных цифр зависит только от выводимого значения, а не от значения этого параметра. Для значений типа float8 требуется не более 17 цифр, а для значений типа float4 - 9 цифр. Этот формат является быстрым и точным, точно сохраняя исходное двоичное значение с плавающей точкой при правильном чтении. Для обеспечения совместимости со старыми версиями допускаются значения до 3.

Если значение равно нулю или отрицательно, то вывод округляется до заданной десятичной точности. Используется стандартное количество цифр для типа (FLT_DIG и DBL_DIG, в зависимости от контекста), уменьшенное в соответствии с значением этого параметра. (Например, указание -1 приведет к округлению значений типа float4 до 5 значащих цифр и значений типаfloat8 до 14 цифр). Этот формат работает медленнее и не сохраняет все биты двоичного значения с плавающей запятой, но может быть более читаемым для человека.

Примечание

Значение этого параметра и его значение по умолчанию изменились в Tantor SE12; см. Раздел 8.1.3 для дальнейшего обсуждения.

client_encoding (string)

Устанавливает клиентскую кодировку (набор символов). По умолчанию используется кодировка базы данных. Наборы символов, поддерживаемые сервером Tantor SE, описаны в разделе Раздел 23.3.1.

lc_messages (string)

Устанавливает язык, на котором отображаются сообщения. Допустимые значения зависят от системы; см. Раздел 23.1 для получения дополнительной информации. Если эта переменная установлена в пустую строку (что является значением по умолчанию), то значение наследуется от среды выполнения сервера способом, зависящим от системы.

На некоторых системах эта категория локали не существует. Установка этой переменной все равно будет работать, но не будет никакого эффекта. Также есть вероятность того, что для желаемого языка не существует переведенных сообщений. В этом случае вы будете продолжать видеть английские сообщения.

Только суперпользователи и пользователи с соответствующим привилегией SET могут изменять это настройку.

lc_monetary (string)

Устанавливает локаль для форматирования денежных сумм, например, с помощью семейства функций to_char. Допустимые значения зависят от системы; см. Раздел 23.1 для получения дополнительной информации. Если эта переменная установлена в пустую строку (что является значением по умолчанию), то значение наследуется от среды выполнения сервера способом, зависящим от системы.

lc_numeric (string)

Устанавливает локаль для форматирования чисел, например, с помощью семейства функций to_char. Допустимые значения зависят от системы; см. Раздел 23.1 для получения дополнительной информации. Если эта переменная установлена в пустую строку (что является значением по умолчанию), то значение наследуется от среды выполнения сервера способом, зависящим от системы.

lc_time (string)

Устанавливает локаль для форматирования дат и времени, например, с помощью семейства функций to_char. Допустимые значения зависят от системы; см. Раздел 23.1 для получения дополнительной информации. Если эта переменная установлена в пустую строку (что является значением по умолчанию), то значение наследуется от среды выполнения сервера способом, зависящим от системы.

default_text_search_config (string)

Выбирает конфигурацию текстового поиска, которая используется в тех вариантах функций текстового поиска, у которых нет явного аргумента, указывающего конфигурацию. См. Глава 12 для получения дополнительной информации. Встроенное значение по умолчанию - pg_catalog.simple, но initdb инициализирует файл конфигурации с настройкой, соответствующей выбранной локали lc_ctype, если может быть определена конфигурация, соответствующая этой локали.

19.11.3. Предварительная загрузка общей библиотеки

Несколько настроек доступны для предварительной загрузки общих библиотек в сервер, чтобы загрузить дополнительную функциональность или достичь повышения производительности. Например, установка '$libdir/mylib' приведет к предварительной загрузке mylib.so (или на некоторых платформах mylib.sl) из стандартного каталога библиотек установки. Различия между настройками заключаются в том, когда они вступают в силу и какие привилегии требуются для их изменения.

Tantor SE Библиотеки процедурных языков могут быть предварительно загружены таким образом, обычно используя синтаксис '$libdir/plXXX', где XXX это pgsql, perl, tcl или python.

Только общие библиотеки, специально предназначенные для использования с PostgreSQL, могут быть загружены таким образом. Каждая поддерживаемая PostgreSQL библиотека имеет "магический блок", который проверяется для обеспечения совместимости. По этой причине, не-PostgreSQL библиотеки не могут быть загружены таким образом. Возможно, вы сможете использовать средства операционной системы, такие как переменная окружения LD_PRELOAD, для этого.

В целом, обратитесь к документации конкретного модуля для рекомендуемого способа загрузки этого модуля.

local_preload_libraries (string)

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

Эта опция может быть установлена любым пользователем. Из-за этого библиотеки, которые могут быть загружены, ограничены теми, которые находятся в подкаталоге plugins стандартной библиотеки установки. (Администратор базы данных несет ответственность за то, чтобы там были установлены только "безопасные" библиотеки). Записи в local_preload_libraries могут явно указывать этот каталог, например, $libdir/plugins/mylib, или просто указывать имя библиотеки - mylib будет иметь тот же эффект, что и $libdir/plugins/mylib.

Целью этой функции является позволить непривилегированным пользователям загружать отладочные или библиотеки для измерения производительности в конкретные сессии без необходимости явной команды LOAD. Для этого обычно устанавливают этот параметр, используя переменную окружения PGOPTIONS на клиенте или с помощью команды ALTER ROLE SET.

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

session_preload_libraries (string)

Эта переменная определяет одну или несколько общих библиотек, которые должны быть предварительно загружены при установлении соединения. Она содержит список имен библиотек, разделенных запятыми, где каждое имя интерпретируется так же, как и для команды LOAD. Пробелы между записями игнорируются; если в имени библиотеки требуется использовать пробелы или запятые, оберните имя в двойные кавычки. Значение параметра применяется только при установлении соединения. Последующие изменения не будут иметь эффекта. Если указанная библиотека не найдена, попытка установления соединения завершится неудачей. Только суперпользователи и пользователи с соответствующими привилегиями SET могут изменять это настройку.

Целью этой функции является возможность загрузки отладочных или библиотек для измерения производительности в конкретные сессии без явного выполнения команды LOAD. Например, auto_explain может быть включен для всех сессий под определенным именем пользователя путем установки этого параметра с помощью ALTER ROLE SET. Кроме того, этот параметр можно изменить без перезапуска сервера (но изменения вступают в силу только при запуске новой сессии), поэтому добавление новых модулей таким образом становится проще, даже если они должны применяться ко всем сессиям.

В отличие от shared_preload_libraries, загрузка библиотеки при запуске сессии вместо первого использования не дает значительного преимущества в производительности. Однако, есть некоторое преимущество при использовании пула подключений.

shared_preload_libraries (string)

Эта переменная определяет одну или несколько общих библиотек, которые будут предварительно загружены при запуске сервера. Она содержит список имен библиотек, разделенных запятыми, где каждое имя интерпретируется так же, как для команды LOAD. Пробелы между записями игнорируются; если в имени библиотеки требуется использовать пробелы или запятые, обрамите имя двойными кавычками. Этот параметр может быть установлен только при запуске сервера. Если указанная библиотека не найдена, сервер не сможет запуститься.

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

Другие библиотеки также могут быть предварительно загружены. Предварительная загрузка общей библиотеки позволяет избежать времени запуска библиотеки при первом использовании. Однако время запуска каждого нового процесса сервера может немного увеличиться, даже если этот процесс никогда не использует библиотеку. Поэтому этот параметр рекомендуется использовать только для библиотек, которые будут использоваться в большинстве сессий. Кроме того, изменение этого параметра требует перезапуска сервера, поэтому это не подходящая настройка для краткосрочных задач отладки, скажем. Вместо этого используйте session_preload_libraries.

Примечание

На хостах Windows предварительная загрузка библиотеки при запуске сервера не сократит время, необходимое для запуска каждого нового процесса сервера; каждый процесс сервера будет повторно загружать все предварительно загруженные библиотеки. Однако shared_preload_libraries все еще полезен на хостах Windows для библиотек, которым необходимо выполнять операции при запуске постмастера.

jit_provider (string)

Эта переменная является именем библиотеки поставщика JIT, которая будет использоваться (см. Раздел 31.4.2). По умолчанию используется llvmjit. Этот параметр может быть установлен только при запуске сервера.

Если установлена несуществующая библиотека, JIT не будет доступен, но ошибки не возникнет. Это позволяет установить поддержку JIT отдельно от основного пакета Tantor SE.

19.11.4. Другие значения по умолчанию

dynamic_library_path (string)

Если динамически загружаемый модуль должен быть открыт, и имя файла, указанное в команде CREATE FUNCTION или LOAD, не содержит компонента каталога (т.е. имя не содержит косую черту), система будет искать требуемый файл в этом пути.

Значение для dynamic_library_path должно быть списком абсолютных путей к каталогам, разделенных двоеточием (или точкой с запятой на Windows). Если элемент списка начинается со специальной строки $libdir, то вместо $libdir подставляется скомпилированный пакетный каталог библиотек Tantor SE; это место, где устанавливаются модули, предоставляемые стандартным распространением Tantor SE. (Используйте pg_config --pkglibdir, чтобы узнать имя этого каталога). Например:

dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'

или, в среде Windows:

dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'

Значение по умолчанию для этого параметра - '$libdir'. Если значение установлено как пустая строка, автоматический поиск пути отключается.

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

gin_fuzzy_search_limit (integer)

Мягкий верхний предел размера набора, возвращаемого сканированием индекса GIN. Дополнительную информацию см. в разделе Раздел 68.5.