18.11. Параметры подключения клиента#
18.11. Параметры подключения клиента #
18.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-1C автоматически будет использовать табличное пространство по умолчанию текущей базы данных. Если указано нестандартное табличное пространство, пользователь должен иметь привилегию
CREATE
для него, иначе попытки создания будут неудачными.Эта переменная не используется для временных таблиц; для них вместо этого используется temp_tablespaces.
Эта переменная также не используется при создании баз данных. По умолчанию, новая база данных наследует настройки табличного пространства от базы данных-шаблона, из которой она копируется.
Если этот параметр установлен на значение, отличное от пустой строки, при создании секционированной таблицы, табличнoe пространствo секционированной таблицы будет установлено в этом значении, которое будет использоваться в качестве табличнoго пространства по умолчанию для будущих созданных секций, даже если
default_tablespace
изменился с тех пор.Для получения дополнительной информации о табличных пространствах см. Раздел 21.6.
default_toast_compression
(enum
) #Эта переменная устанавливает метод сжатия по умолчанию TOAST для значений сжимаемых столбцов. (Это можно переопределить для отдельных столбцов, установив опцию столбца
COMPRESSION
в командахCREATE TABLE
илиALTER TABLE
). Поддерживаемые методы сжатия - pglz и (если Tantor SE-1Cбыл скомпилирован с опцией--with-lz4
)lz4
. По умолчанию используетсяpglz
.temp_tablespaces
(string
) #Эта переменная определяет табличные пространства, в которых создаются временные объекты (временные таблицы и индексы на временных таблицах), когда команда
CREATE
не указывает явно табличнoe пространствo. Временные файлы, используемые, например, для сортировки больших наборов данных, также создаются в этих табличных пространствах.Значение представляет собой список имен табличных пространств. Когда в списке есть более одного имени, Tantor SE-1C выбирает случайный элемент списка каждый раз, когда создается временный объект; за исключением того, что в пределах транзакции последовательно созданные временные объекты размещаются в последовательных табличных пространствах из списка. Если выбранный элемент списка является пустой строкой, Tantor SE-1C автоматически использует табличное пространство по умолчанию текущей базы данных.
Когда
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
короче или равенidle_in_transaction_session_timeout
илиstatement_timeout
, то более длительный тайм-аут игнорируется.Установка параметра
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
) #Прервать любую сессию, которая была бездействующей (то есть ожидающей запроса клиента) в рамках открытой транзакции дольше указанного времени. Если это значение указано без единиц измерения, оно считается в миллисекундах. Значение нуль (по умолчанию) отключает тайм-аут.
Эта опция может быть использована для того, чтобы гарантировать, что простаивающие сессии не удерживают блокировки в течение неприемлемо долгого времени. Даже когда не удерживаются значительные блокировки, открытая транзакция предотвращает удаление умерших кортежей, которые могут быть видны только этой транзакции; поэтому длительное простаивание может способствовать раздутию таблицы. См. Раздел 23.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
для предотвращения зацикливания. Дополнительную информацию см. в разделе Раздел 23.1.5.vacuum_freeze_min_age
(integer
) #Указывает предельный возраст (в транзакциях), который
VACUUM
должен использовать для принятия решения о необходимости заморозки страниц, имеющих более старый XID. По умолчанию это 50 миллионов транзакций. Хотя пользователи могут установить это значение в пределах от нуля до одного миллиарда,VACUUM
молча ограничит эффективное значение половиной значения autovacuum_freeze_max_age, чтобы избежать чрезмерно короткого времени между принудительными автovacuum. Для получения дополнительной информации см. Раздел 23.1.5.vacuum_failsafe_age
(integer
) #Определяет максимальный возраст (в транзакциях), который может достигнуть поле
relfrozenxid
таблицыpg_class
перед тем, какVACUUM
предпримет чрезвычайные меры для предотвращения сбоя системы из-за зацикливания идентификаторов транзакций. Это стратегия последнего шанса для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
в ручном режиме могла выполниться перед запуском команды, предотвращающей зацикливание, для таблицы. Дополнительную информацию см. в разделе Раздел 23.1.5.1.vacuum_multixact_freeze_min_age
(integer
) #Задает предельный возраст (в multixacts), который
VACUUM
должен использовать для принятия решения о необходимости замораживания страниц с более старым multixact ID. По умолчанию это 5 миллионов multixacts. Хотя пользователи могут установить это значение в пределах от нуля до одного миллиарда,VACUUM
будет молча ограничивать эффективное значение до половины значения autovacuum_multixact_freeze_max_age, чтобы не было неоправданно короткого времени между принудительными autovacuum. Для получения дополнительной информации см. Раздел 23.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, изменив параметры хранения индекса. Дополнительную информацию см. в разделах Раздел 67.4.1 и Раздел 67.5.createrole_self_grant
(string
) #Если пользователь, имеющий
CREATEROLE
, но неSUPERUSER
, создает роль, и если это установлено в непустое значение, вновь созданная роль будет предоставлена создающему пользователю с указанными параметрами. Значение должно бытьset
,inherit
или список этих значений, разделенных запятыми. Значение по умолчанию — пустая строка, что отключает эту функцию.Цель этого параметра - позволить пользователю с правами
CREATEROLE
, который не является суперпользователем, автоматически наследовать или автоматически получать возможностьSET ROLE
для любых созданных пользователей. Поскольку пользователю с правамиCREATEROLE
всегда неявно предоставляетсяADMIN OPTION
для созданных ролей, этот пользователь всегда может выполнить операторGRANT
, который достигнет того же эффекта, что и эта настройка. Однако, для удобства использования может быть полезно, если предоставление прав происходит автоматически. Суперпользователь автоматически наследует привилегии каждой роли и всегда может выполнитьSET ROLE
для любой роли, и эта настройка может быть использована для создания аналогичного поведения для пользователей с правамиCREATEROLE
для пользователей, которых они создают.restrict_nonsystem_relation_kind
(string
) #Эта переменная указывает тип отношения, к которому доступ ограничен. Она содержит список типов отношений, разделенных запятыми. В настоящее время поддерживаемые типы отношений:
view
иforeign-table
.
18.11.2. Локализация и форматирование #
DateStyle
(string
) #Устанавливает формат отображения значений даты и времени, а также правила для интерпретации неоднозначных значений ввода даты. По историческим причинам эта переменная содержит две независимые компоненты: спецификацию формата вывода (
ISO
,Postgres
,SQL
, илиGerman
) и спецификацию ввода/вывода для упорядочивания год/месяц/день (DMY
,MDY
, илиYMD
). Эти компоненты могут быть установлены отдельно или вместе. Ключевые словаEuro
bEuropean
являются синонимами дляDMY
; ключевые словаUS
,NonEuro
иNonEuropean
являются синонимами дляMDY
. Дополнительную информацию см. в разделе Раздел 8.5. Встроенное значение по умолчанию -ISO, MDY
, но initdb инициализирует файл конфигурации настройкой, соответствующей поведению выбранной локалиlc_time
.IntervalStyle
(enum
) #Устанавливает формат отображения значений интервалов. Значение
sql_standard
будет производить вывод, соответствующий стандартным литералам интервалов SQL. Значениеpostgres
(которое является значением по умолчанию) будет производить вывод, соответствующий версиям Tantor SE-1C до 8.4, когда параметр DateStyle был установлен в значениеISO
. Значениеpostgres_verbose
будет производить вывод, соответствующий версиям Tantor SE-1C до 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 SE-1C12; см. Раздел 8.1.3 для дальнейшего обсуждения.
client_encoding
(string
) #Устанавливает клиентскую кодировку (набор символов). По умолчанию используется кодировка базы данных. Наборы символов, поддерживаемые сервером Tantor SE-1C, описаны в разделе Раздел 22.3.1.
lc_messages
(string
) #Устанавливает язык, на котором отображаются сообщения. Допустимые значения зависят от системы; см. Раздел 22.1 для получения дополнительной информации. Если эта переменная установлена в пустую строку (что является значением по умолчанию), то значение наследуется от среды выполнения сервера способом, зависящим от системы.
На некоторых системах эта категория локали не существует. Установка этой переменной все равно будет работать, но не будет никакого эффекта. Также есть вероятность того, что для желаемого языка не существует переведенных сообщений. В этом случае вы будете продолжать видеть английские сообщения.
Только суперпользователи и пользователи с соответствующим привилегией
SET
могут изменять это настройку.lc_monetary
(string
) #Устанавливает локаль для форматирования денежных сумм, например, с помощью семейства функций
to_char
. Допустимые значения зависят от системы; см. Раздел 22.1 для получения дополнительной информации. Если эта переменная установлена в пустую строку (что является значением по умолчанию), то значение наследуется от среды выполнения сервера способом, зависящим от системы.lc_numeric
(string
) #Устанавливает локаль для форматирования чисел, например, с помощью семейства функций
to_char
. Допустимые значения зависят от системы; см. Раздел 22.1 для получения дополнительной информации. Если эта переменная установлена в пустую строку (что является значением по умолчанию), то значение наследуется от среды выполнения сервера способом, зависящим от системы.lc_time
(string
) #Устанавливает локаль для форматирования дат и времени, например, с помощью семейства функций
to_char
. Допустимые значения зависят от системы; см. Раздел 22.1 для получения дополнительной информации. Если эта переменная установлена в пустую строку (что является значением по умолчанию), то значение наследуется от среды выполнения сервера способом, зависящим от системы.icu_validation_level
(enum
) #Когда возникают проблемы с проверкой локали ICU, определяет, какой уровень сообщения используется для сообщения о проблеме. Допустимые значения:
DISABLED
,DEBUG5
,DEBUG4
,DEBUG3
,DEBUG2
,DEBUG1
,INFO
,NOTICE
,WARNING
,ERROR
иLOG
.Если установлено значение
DISABLED
, проблемы валидации вообще не будут сообщаться. В противном случае проблемы будут сообщаться на указанном уровне сообщений. Значение по умолчанию —WARNING
.default_text_search_config
(string
) #Выбирает конфигурацию текстового поиска, которая используется в тех вариантах функций текстового поиска, у которых нет явного аргумента, указывающего конфигурацию. См. Глава 12 для получения дополнительной информации. Встроенное значение по умолчанию -
pg_catalog.simple
, но initdb инициализирует файл конфигурации с настройкой, соответствующей выбранной локалиlc_ctype
, если может быть определена конфигурация, соответствующая этой локали.
18.11.3. Предварительная загрузка общей библиотеки #
Несколько настроек доступны для предварительной загрузки общих библиотек в сервер, чтобы загрузить дополнительную функциональность или достичь повышения производительности. Например, установка '$libdir/mylib'
приведет к предварительной загрузке mylib.so
(или на некоторых платформах mylib.sl
) из стандартного каталога библиотек установки. Различия между настройками заключаются в том, когда они вступают в силу и какие привилегии требуются для их изменения.
Tantor SE-1C Библиотеки процедурных языков могут быть предварительно загружены таким образом, обычно используя синтаксис '$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, которая будет использоваться (см. Раздел 30.4.2). По умолчанию используется
llvmjit
. Этот параметр может быть установлен только при запуске сервера.Если установлена несуществующая библиотека, JIT не будет доступен, но ошибки не возникнет. Это позволяет установить поддержку JIT отдельно от основного пакета Tantor SE-1C.
18.11.4. Другие значения по умолчанию #
dynamic_library_path
(string
) #Если динамически загружаемый модуль должен быть открыт, и имя файла, указанное в команде
CREATE FUNCTION
илиLOAD
, не содержит компонента каталога (т.е. имя не содержит косую черту), система будет искать требуемый файл в этом пути.Значение для
dynamic_library_path
должно быть списком абсолютных путей к каталогам, разделенных двоеточием (или точкой с запятой на Windows). Если элемент списка начинается со специальной строки$libdir
, то вместо$libdir
подставляется скомпилированный пакетный каталог библиотек Tantor SE-1C; это место, где устанавливаются модули, предоставляемые стандартным распространением Tantor SE-1C. (Используйте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. Дополнительную информацию см. в разделе Раздел 67.5.