[Документация Yandex Cloud](../../index.md) > [Yandex Managed Service for PostgreSQL](../index.md) > [Концепции](index.md) > Настройки PostgreSQL

# Настройки PostgreSQL

Для кластера Managed Service for PostgreSQL можно задать настройки, которые относятся к PostgreSQL. Часть настроек задается [на уровне кластера](#dbms-cluster-settings), часть — [на уровне пользователя](#dbms-user-settings).

Метки рядом с названием настройки позволяют определить, с помощью какого интерфейса задается значение этой настройки: консоль управления, CLI, [API](../../glossary/rest-api.md) или Terraform. Метка <code><b><small>Все интерфейсы</small></b></code> указывает, что поддерживаются все перечисленные интерфейсы.

В зависимости от выбранного интерфейса, одна и та же настройка будет представлена по-разному, например:
- **Backend flush after** в консоли управления соответствует:
  - `backend_flush_after` в gRPC API, CLI, Terraform;
  - `backendFlushAfter` в REST API;
- **Default transaction isolation** в настройках уровня пользователя в консоли управления соответствует:
  - `--default-transaction-isolation` в CLI;
  - `default_transaction_isolation` в gRPC API;
  - `defaultTransactionIsolation` в REST API.

## Зависимость настроек от класса хостов и размера хранилища {#settings-instance-dependent}

Значения некоторых настроек PostgreSQL могут быть автоматически скорректированы при изменении класса хостов или размера хранилища:

- Если значения не были заданы или не подходят новому классу/размеру, будут применены настройки по умолчанию для этого класса/размера.
- Если заданные вручную настройки подходят для нового класса/размера, они не будут изменены.

Список настроек, зависящих от класса хостов:

- [Autovacuum max workers](#setting-autovacuum-max-workers).
- [Autovacuum vacuum cost delay](#setting-autovacuum-vacuum-cost-delay).
- [Autovacuum vacuum cost limit](#setting-autovacuum-vacuum-cost-limit).
- [Conn limit](#setting-conn-limit).
- [Max connections](#setting-max-connections).
- [Shared buffers](#setting-shared-buffers).

Список настроек, зависящих от размера хранилища:

- [Max wal size](#setting-max-wal-size);
- [Min wal size](#setting-min-wal-size).

## Настройки на уровне кластера {#dbms-cluster-settings}

Доступны следующие настройки:

- **Archive timeout**{#setting-archive-timeout} <code><b><small>Все интерфейсы</small></b></code>

  Периодичность (в миллисекундах) архивации лога транзакций PostgreSQL.

  Минимальное значение — `10000`, максимальное значение — `86400000`, по умолчанию — `30000`.

  Подробнее в описании настройки `archive_timeout` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-ARCHIVE-TIMEOUT).

- **Array nulls**{#setting-array-nulls} <code><b><small>Все интерфейсы</small></b></code>

  Управляет распознаванием элементов `NULL` при вставке массива. Если настройка включена, то такие элементы распознаются как пустое поле `NULL`. В противном случае — как строка с текстом «`NULL`».

  По умолчанию настройка включена.

  Подробнее в описании настройки `array_nulls` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-compatible.html#GUC-ARRAY-NULLS).

- **Auto explain log analyze**{#setting-auto-explain-log-analyze} <code><b><small>Все интерфейсы</small></b></code>

  Определяет, будет ли статистика плана запроса выводиться в лог PostgreSQL автоматически, без использования команды `EXPLAIN`. Это позволяет отслеживать неоптимизированные запросы. Настройка использует модуль `auto_explain`, для его работы необходимо [подключить библиотеку `auto_explain`](#setting-shared-libraries).

  По умолчанию настройка выключена (статистика плана запроса не выводится в лог).

  Подробнее в описании настройки `auto_explain.log_analyze` в [документации PostgreSQL](https://www.postgresql.org/docs/current/auto-explain.html).

- **Auto explain log buffers**{#setting-auto-explain-log-buffers} <code><b><small>Все интерфейсы</small></b></code>

  Определяет, будет ли статистика использования буферного кеша выводиться в лог PostgreSQL через модуль `auto_explain`. Работает аналогично параметру `BUFFERS` в команде `EXPLAIN`. Применяется только при включенной настройке [Auto explain log analyze](#setting-auto-explain-log-analyze).

  По умолчанию настройка выключена (статистика использования буферного кеша не выводится в лог).

  Подробнее в описании настройки `auto_explain.log_buffers` в [документации PostgreSQL](https://www.postgresql.org/docs/current/auto-explain.html).

- **Auto explain log format**{#setting-auto-explain-log-format} <code><b><small>Все интерфейсы</small></b></code>

  Определяет формат вывода данных в лог PostgreSQL для модуля `auto_explain`:
  
  * `text` (`AUTO_EXPLAIN_LOG_FORMAT_TEXT` для Terraform и API);
  * `xml` (`AUTO_EXPLAIN_LOG_FORMAT_XML` для Terraform и API);
  * `json` (`AUTO_EXPLAIN_LOG_FORMAT_JSON` для Terraform и API);
  * `yaml` (`AUTO_EXPLAIN_LOG_FORMAT_YAML` для Terraform и API).

  Значение по умолчанию — `text`.

  Подробнее в описании настройки `auto_explain.log_format` в [документации PostgreSQL](https://www.postgresql.org/docs/current/auto-explain.html#AUTO-EXPLAIN-CONFIGURATION-PARAMETERS-LOG-FORMAT).

- **Auto explain log min duration**{#setting-auto-explain-log-min-duration} <code><b><small>Все интерфейсы</small></b></code>

  Минимальное время выполнения запроса (в миллисекундах), при котором включается логирование в модуле `auto_explain`.

  Минимальное значение — `-1` (логирование отключено), максимальное значение — `2147483647`, по умолчанию — `-1`. При значении `0` логируются планы всех запросов независимо от времени их выполнения.

  Подробнее в описании настройки `auto_explain.log_min_duration` в [документации PostgreSQL](https://www.postgresql.org/docs/current/auto-explain.html).

- **Auto explain log nested statements**{#setting-auto-explain-log-nested-statements} <code><b><small>Все интерфейсы</small></b></code>

  Определяет, будет ли в модуле `auto_explain` логироваться выполнение вложенных запросов внутри SQL-функций. Применяется только при включенной настройке [Auto explain log analyze](#setting-auto-explain-log-analyze).

  По умолчанию настройка выключена (логируются только планы верхнеуровневых запросов).

  Подробнее в описании настройки `auto_explain.log_nested_statements` в [документации PostgreSQL](https://www.postgresql.org/docs/current/auto-explain.html).

- **Auto explain log timing**{#setting-auto-explain-log-timing} <code><b><small>Все интерфейсы</small></b></code>

  Определяет, будет ли в модуле `auto_explain` логироваться время выполнения отдельных этапов плана запроса. Работает аналогично параметру `TIMING` в команде `EXPLAIN`. Применяется только при включенной настройке [Auto explain log analyze](#setting-auto-explain-log-analyze).

  По умолчанию настройка выключена (время выполнения отдельных этапов не логируется).

  Подробнее в описании настройки `auto_explain.log_timing` в [документации PostgreSQL](https://www.postgresql.org/docs/current/auto-explain.html).

- **Auto explain log triggers**{#setting-auto-explain-log-triggers} <code><b><small>Все интерфейсы</small></b></code>

  Определяет, будет ли в модуле `auto_explain` выводиться статистика выполнения триггеров. Применяется только при включенной настройке [Auto explain log analyze](#setting-auto-explain-log-analyze).

  По умолчанию настройка выключена (статистика выполнения триггеров не выводится).

  Подробнее в описании настройки `auto_explain.log_triggers` в [документации PostgreSQL](https://www.postgresql.org/docs/current/auto-explain.html).

- **Auto explain log verbose**{#setting-auto-explain-log-verbose} <code><b><small>Все интерфейсы</small></b></code>

  Определяет, будут ли в модуле `auto_explain` детализированы логи. Работает аналогично параметру `VERBOSE` в команде `EXPLAIN`. Применяется только при включенной настройке [Auto explain log analyze](#setting-auto-explain-log-analyze).

  По умолчанию настройка выключена (логи не детализируются).

  Подробнее в описании настройки `auto_explain.log_verbose` в [документации PostgreSQL](https://www.postgresql.org/docs/current/auto-explain.html).

- **Auto explain sample rate**{#setting-auto-explain-sample-rate} <code><b><small>Все интерфейсы</small></b></code>

  Доля запросов, которые логируются с помощью модуля `auto_explain` в каждой сессии. Применяется только при включенной настройке [Auto explain log analyze](#setting-auto-explain-log-analyze).

  Минимальное значение — `0.0` (никакие запросы не логируются), максимальное значение — `1.0` (логируются все запросы), по умолчанию — `1.0`.

  Подробнее в описании настройки `auto_explain.sample_rate` в [документации PostgreSQL](https://www.postgresql.org/docs/current/auto-explain.html).

- **Autovacuum analyze scale factor**{#setting-autovacuum-analyze-scale-factor} <code><b><small>Все интерфейсы</small></b></code>

  Доля измененных или удаленных записей в таблице, при которой [процесс автоочистки](https://www.postgresql.org/docs/current/routine-vacuuming.html#AUTOVACUUM) выполнит команду `ANALYZE` для сбора статистики.

  Минимальное значение — `0.0`, максимальное значение — `1.0`, по умолчанию — `0.0001`.

  Подробнее в описании настройки `autovacuum_analyze_scale_factor` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-autovacuum.html#GUC-AUTOVACUUM-ANALYZE-SCALE-FACTOR).

- **Autovacuum max workers**{#setting-autovacuum-max-workers} <code><b><small>Все интерфейсы</small></b></code>

  Максимальное количество параллельно запущенных [процессов автоочистки](https://www.postgresql.org/docs/current/routine-vacuuming.html#AUTOVACUUM). Автоочистка периодически запускается для каждой БД, определяет, какие из записей в таблицах помечены на удаление, и удаляет их.

  Минимальное значение — `1`, максимальное значение — `32`. Значение по умолчанию [зависит от выбранного класса хостов](#settings-instance-dependent) и равно количеству vCPU на одном хосте, но не может быть меньше `3`.

  Подробнее в описании настройки `autovacuum_max_workers` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-autovacuum.html#GUC-AUTOVACUUM-MAX-WORKERS).

- **Autovacuum naptime**{#setting-autovacuum-naptime} <code><b><small>Все интерфейсы</small></b></code>

  Задает минимальный интервал (в миллисекундах) между запусками [процесса автоочистки](https://www.postgresql.org/docs/current/routine-vacuuming.html#AUTOVACUUM). Чтобы не нагружать БД при частых изменениях данных, увеличьте значение настройки.

  Минимальное значение — `1000`, максимальное значение — `86400000`, по умолчанию — `15000`.

  Подробнее в описании настройки `autovacuum_naptime` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-autovacuum.html#GUC-AUTOVACUUM-NAPTIME).

- **Autovacuum vacuum cost delay**{#setting-autovacuum-vacuum-cost-delay} <code><b><small>Все интерфейсы</small></b></code>

  Время (в миллисекундах), в течение которого будет простаивать [процесс автоочистки](https://www.postgresql.org/docs/current/routine-vacuuming.html#AUTOVACUUM) при превышении [предела стоимости](#setting-autovacuum-vacuum-cost-limit).

  Минимальное значение — `-1` (настройка не применяется), максимальное значение — `100`. Значение по умолчанию [зависит от выбранного класса хостов](#settings-instance-dependent):

  - Если количество vCPU для выбранного класса хостов больше или равно 10, используется значение `5`.
  - В остальных случаях значение по умолчанию рассчитывается по формуле:

    ```text
    55 - 5 × <количество_vCPU_на_одном_хосте>
    ```

  Подробнее в описании настройки `autovacuum_vacuum_cost_delay` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-autovacuum.html#GUC-AUTOVACUUM-VACUUM-COST-DELAY).

- **Autovacuum vacuum cost limit**{#setting-autovacuum-vacuum-cost-limit} <code><b><small>Все интерфейсы</small></b></code>

  Предел стоимости, при превышении которого [процесс автоочистки](https://www.postgresql.org/docs/current/routine-vacuuming.html#AUTOVACUUM) будет остановлен на время, заданное параметром [Autovacuum vacuum cost delay](#setting-autovacuum-vacuum-cost-delay).

  Минимальное значение — `-1` (настройка не применяется), максимальное значение — `10000`. Значение по умолчанию [зависит от выбранного класса хостов](#settings-instance-dependent) и задается формулой:

  ```text
  150 × <количество_vCPU_на_одном_хосте> + 400
  ```

  Пример:

  Класс хоста | vCPU | Значение по умолчанию
  ---|----|-----
  s2.small | 4 | `150 × 4 + 400 = 1000`
  m2.medium| 6 | `150 × 6 + 400 = 1300`

  Подробнее в описании настройки `autovacuum_vacuum_cost_limit` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-autovacuum.html#GUC-AUTOVACUUM-VACUUM-COST-LIMIT).

- **Autovacuum vacuum insert scale factor**{#setting-autovacuum-vacuum-insert-scale-factor} <code><b><small>Все интерфейсы</small></b></code>

  Доля от размера таблицы, добавляемая к величине настройки [Autovacuum vacuum insert threshold](#setting-autovacuum-vacuum-insert-threshold), по достижении которой запустится [процесс автоочистки](https://www.postgresql.org/docs/current/routine-vacuuming.html#AUTOVACUUM).

  Минимальное значение — `0.0`, максимальное значение — `1.0`, по умолчанию — `0.2`.

  Функциональность поддерживается в PostgreSQL начиная с версии 13.

  Подробнее в описании настройки `autovacuum_vacuum_insert_scale_factor` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-autovacuum.html#GUC-AUTOVACUUM-VACUUM-INSERT-SCALE-FACTOR).

- **Autovacuum vacuum insert threshold**{#setting-autovacuum-vacuum-insert-threshold} <code><b><small>Все интерфейсы</small></b></code>

  Задает количество строк, вставка которых в любую таблицу запустит [процесс автоочистки](https://www.postgresql.org/docs/current/routine-vacuuming.html#AUTOVACUUM).

  Минимальное значение — `-1` (настройка не применяется), максимальное значение — `2147483647`, по умолчанию — `1000`.

  Функциональность поддерживается в PostgreSQL начиная с версии 13.

  Подробнее в описании настройки `autovacuum_vacuum_insert_threshold` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-autovacuum.html#GUC-AUTOVACUUM-VACUUM-INSERT-THRESHOLD).

- **Autovacuum vacuum scale factor**{#setting-autovacuum-vacuum-scale-factor} <code><b><small>Все интерфейсы</small></b></code>

  Доля измененных или удаленных записей в таблице, при которой [процесс автоочистки](https://www.postgresql.org/docs/current/routine-vacuuming.html#AUTOVACUUM) запустит сборку и удаление мусора командой `VACUUM`.

  Минимальное значение — `0.0` (настройка не применяется), максимальное значение — `1.0`, по умолчанию — `0.00001`.

  Подробнее в описании настройки `autovacuum_vacuum_scale_factor` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-autovacuum.html#GUC-AUTOVACUUM-VACUUM-SCALE-FACTOR).

- **Autovacuum work mem**{#setting-autovacuum-work-mem} <code><b><small>Все интерфейсы</small></b></code>

  Объем памяти (в байтах), выделяемый каждому [процессу автоочистки](https://www.postgresql.org/docs/current/routine-vacuuming.html#AUTOVACUUM).

  Минимальное значение — `-1` (настройка не применяется), максимальное значение — `2147483647`, по умолчанию — `-1`.

  Подробнее в описании настройки `autovacuum_work_mem` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-AUTOVACUUM-WORK-MEM).

- **Backend flush after**{#setting-backend-flush-after} <code><b><small>Все интерфейсы</small></b></code>

  Максимальный объем записываемых служебным процессом данных (в килобайтах) в страничном кеше ядра ОС. При его превышении СУБД дает команду ОС записать данные на диск. Чем больше параметр, тем меньше вероятность замедления при записи данных на диск (в том числе, после завершения контрольной точки) командой `fsync`.

  Минимальное значение — `0` (настройка не применяется), максимальное значение — `2048`, по умолчанию — `0`.

  Подробнее в описании настройки `backend_flush_after` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-BACKEND-FLUSH-AFTER).

- **Backslash quote**{#setting-backslash-quote} <code><b><small>Все интерфейсы</small></b></code>

  Управляет представлением кавычки в SQL-строке.

  Допустимые значения:

  - `backslash_quote` (`BACKSLASH_QUOTE` для Terraform, API и CLI) — кавычка может быть представлена как `\'` (эквивалентно значению `on`);
  - `on` (`BACKSLASH_QUOTE_ON` для Terraform, API и CLI) — кавычка может быть представлена как `\'`;
  - `off` (`BACKSLASH_QUOTE_OFF` для Terraform, API и CLI) — кавычка задается только обычным для SQL способом `''`;
  - `safe_encoding` (`BACKSLASH_QUOTE_SAFE_ENCODING` для Terraform, API и CLI) — представление кавычки как `\'` допускается только для клиентских кодировок, не использующих `\` в многобайтных символах.

  Значение по умолчанию — `safe_encoding`.

  Подробнее в описании настройки `backslash_quote` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-compatible.html#GUC-BACKSLASH-QUOTE).

- **Bgwriter delay**{#setting-bgwriter-delay} <code><b><small>Все интерфейсы</small></b></code>

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

  Минимальное значение — `10`, максимальное значение — `10000`, по умолчанию — `200`.

  Подробнее в описании настройки `bgwriter_delay` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-BGWRITER-DELAY).

- **Bgwriter flush after**{#setting-bgwriter-flush-after} <code><b><small>Все интерфейсы</small></b></code>

  Объем данных (в килобайтах), обрабатываемых процессом фоновой записи, при превышении которого СУБД дает команду ОС сохранить эти данные на диск. Параметр ограничивает объем «грязных» данных в страничном кеше ядра ОС и уменьшает вероятность замедления при выполнении команды `fsync` в конце контрольной точки или когда ОС в фоне сбрасывает данные на диск.

  Минимальное значение — `0`, максимальное значение — `2048`, по умолчанию — `512`.

  Подробнее в описании настройки `bgwriter_flush_after` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-BGWRITER-FLUSH-AFTER).

- **Bgwriter lru maxpages**{#setting-bgwriter-lru-maxpages} <code><b><small>Все интерфейсы</small></b></code>

  Максимальное число элементов буферного кеша PostgreSQL, которое процесс фоновой записи может сохранить за цикл активности. При нулевом значении фоновая запись отключается.

  Минимальное значение — `0`, максимальное значение — `1073741823`, по умолчанию — `100`.

  Подробнее в описании настройки `bgwriter_lru_maxpages` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-BGWRITER-LRU-MAXPAGES).

- **Bgwriter lru multiplier**{#setting-bgwriter-lru-multiplier} <code><b><small>Все интерфейсы</small></b></code>

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

  Минимальное значение — `0`, максимальное значение — `10`, по умолчанию — `2`.

  Подробнее в описании настройки `bgwriter_lru_multiplier` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-BGWRITER-LRU-MULTIPLIER).

- **Bytea output**{#setting-bytea-output} <code><b><small>Все интерфейсы</small></b></code>

  Задает формат вывода [бинарных строковых значений](https://www.postgresql.org/docs/current/datatype-binary.html) (тип `bytea`):

  - `hex` (`BYTEA_OUTPUT_HEX` для Terraform, API и CLI) — каждый байт задается двумя шестнадцатеричными символами, например '`SELECT '\xDEADBEEF';`';
  - `escape` (`BYTEA_OUTPUT_ESCAPE` для Terraform, API и CLI) — стандартный формат PostgreSQL, только символы ASCII.

  Значение по умолчанию — `hex`.

  Подробнее в [документации PostgreSQL](https://www.postgresql.org/docs/current/datatype-binary.html).

- **Checkpoint completion target**{#setting-checkpoint-completion-target} <code><b><small>Все интерфейсы</small></b></code>

  Доля интервала между контрольными точками, определяющая максимальную продолжительность снятия контрольной точки. Например, при значении `0.5` снятие контрольной точки будет завершено примерно за половину времени до следующей контрольной точки.

  Минимальное значение — `0.0`, максимальное значение — `1.0`, по умолчанию — `0.5`.

  Подробнее в описании настройки `checkpoint_completion_target` в [документации PostgreSQL](https://www.postgresql.org/docs/current/wal-configuration.html).

- **Checkpoint flush after**{#setting-checkpoint-flush-after} <code><b><small>Все интерфейсы</small></b></code>

  Объем области памяти (в килобайтах), занятый страницами для записи в контрольной точке. Те страницы, которые выходят за границы области, будут сброшены на диск и удалены из страничного кеша ОС.

  Минимальное значение — `0`, максимальное значение — `2048`, по умолчанию — `256`.

  Подробнее в описании настройки `checkpoint_flush_after` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-CHECKPOINT-FLUSH-AFTER).

- **Checkpoint timeout**{#setting-checkpoint-timeout} <code><b><small>Все интерфейсы</small></b></code>

  Интервал между контрольными точками (в миллисекундах).

  Минимальное значение — `30000`, максимальное значение — `86400000`, по умолчанию — `300000`.

  Подробнее в описании настройки `checkpoint_timeout` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-CHECKPOINT-TIMEOUT).

- **Client connection check interval**{#setting-client-connection-check-interval} <code><b><small>Все интерфейсы</small></b></code>

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

  Минимальное значение — `0` (проверка не выполняется), максимальное значение — `2147483647`. По умолчанию установлено минимальное значение.

  Функциональность поддерживается в PostgreSQL начиная с версии 14.

  Подробнее в описании настройки `client_connection_check_interval` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-CLIENT-CONNECTION-CHECK-INTERVAL).

- **Client min messages**{#setting-client-min-messages} <code><b><small>Все интерфейсы</small></b></code>

  Уровень сообщений логирования, отправляемых клиентским приложениям. Возможные значения (по возрастанию важности): `debug5`, `debug4`, `debug3`, `debug2`, `debug1`, `info`, `notice`, `warning`, `error`, `log`, `fatal` и `panic` (для Terraform, API, CLI `LOG_LEVEL_DEBUG5`, `LOG_LEVEL_DEBUG4`, `LOG_LEVEL_DEBUG3`, `LOG_LEVEL_DEBUG2`, `LOG_LEVEL_DEBUG1`, `LOG_LEVEL_INFO`, `LOG_LEVEL_NOTICE`, `LOG_LEVEL_WARNING`, `LOG_LEVEL_ERROR`, `LOG_LEVEL_LOG`, `LOG_LEVEL_FATAL` и `LOG_LEVEL_PANIC`).

  Значение по умолчанию — `NOTICE`.

  Подробнее в описании настройки `client_min_messages` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-CLIENT-MIN-MESSAGES).

- **Constraint exclusion**{#setting-constraint-exclusion} <code><b><small>Все интерфейсы</small></b></code>

  Разрешает планировщику использовать ограничения таблиц для оптимизации запросов.

  Допустимые значения:

  - `on` (`CONSTRAINT_EXCLUSION_ON` для Terraform, API и CLI) — задействовать ограничения для всех таблиц;
  - `off` (`CONSTRAINT_EXCLUSION_OFF` для Terraform, API и CLI) — не задействовать ограничения;
  - `partition` (`CONSTRAINT_EXCLUSION_PARTITION` для Terraform, API и CLI) — задействовать ограничения только для дочерних таблиц и подзапросов `UNION ALL`.

  Значение по умолчанию — `partition`.

  Подробнее в описании настройки `constraint_exclusion` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-CONSTRAINT-EXCLUSION).

- **Cursor tuple fraction**{#setting-cursor-tuple-fraction} <code><b><small>Все интерфейсы</small></b></code>

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

  Минимальное значение — `0.0`, максимальное значение — `1.0`, по умолчанию — `0.1`.

  Подробнее в описании настройки `cursor_tuple_fraction` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-CURSOR-TUPLE-FRACTION).

- **Deadlock timeout**{#setting-deadlock-timeout} <code><b><small>Все интерфейсы</small></b></code>

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

  Минимальное значение — `1`, максимальное значение — `2147483647`, по умолчанию — `1000`.

  Подробнее в описании настройки `deadlock_timeout` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-locks.html#GUC-DEADLOCK-TIMEOUT).

- **Debug parallel query**{#setting-debug-parallel-query} <code><b><small>Все интерфейсы</small></b></code>

  Настройка доступна в версиях PostgreSQL `16` и выше.

  Позволяет использовать параллельные запросы для тестирования:

  * `off` (`DEBUG_PARALLEL_QUERY_OFF` для Terraform и API) — параллельный режим используется, только когда ожидается повышение производительности;
  * `on` (`DEBUG_PARALLEL_QUERY_ON` для Terraform и API) — параллельный режим используется принудительно для всех запросов, для которых это безопасно;
  * `regress` (`DEBUG_PARALLEL_QUERY_REGRESS` для Terraform и API) — аналогично значению `on`, но с некоторыми особенностями, которые облегчают автоматическое регрессионное тестирование. Например, скрываются узлы Gather в выводе команды `EXPLAIN`.

  Значение по умолчанию — `off`.

  Подробнее в описании настройки `debug_parallel_query` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-developer.html#GUC-DEBUG-PARALLEL-QUERY).

- **Default statistics target**{#setting-default-statistics-target} <code><b><small>Все интерфейсы</small></b></code>

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

  Чтобы повысить точность оценок планировщика, увеличьте значение настройки.

  Минимальное значение — `1`, максимальное значение — `10000`, по умолчанию — `1000`.

  Подробнее в описании настройки `default_statistics_target` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-DEFAULT-STATISTICS-TARGET).

- **Default transaction isolation**{#setting-default-transaction-isolation} <code><b><small>Все интерфейсы</small></b></code>

  Определяет уровень изоляции по умолчанию для новых транзакций SQL.

  Допустимые значения:

  - `read committed` (`TRANSACTION_ISOLATION_READ_COMMITTED` для Terraform, API и CLI) — запрос видит только те строки, которые были зафиксированы до начала его выполнения.
  - `read uncommitted` (`TRANSACTION_ISOLATION_READ_UNCOMMITTED` для Terraform, API и CLI) — поведение этого уровня изоляции в PostgreSQL идентично `read committed`.
  - `repeatable read` (`TRANSACTION_ISOLATION_REPEATABLE_READ` для Terraform, API и CLI) — все запросы в текущей транзакции видят только те строки, которые были зафиксированы перед первым выполненным в этой транзакции запросом на выборку или изменение данных.
  - `serializable` (`TRANSACTION_ISOLATION_SERIALIZABLE` для Terraform, API и CLI) — обеспечивает самый строгий уровень изоляции из всех приведенных выше. Поведение этого уровня изоляции в PostgreSQL аналогично `repeatable read`. Однако, если наложение операций чтения и записи параллельных сериализуемых транзакций несовместимо с их последовательным выполнением, произойдет откат одной из транзакций с ошибкой «сбой сериализации».

  Значение по умолчанию — `read committed`.

  Подробнее об уровнях изоляции читайте [в документации PostgreSQL](https://www.postgresql.org/docs/current/transaction-iso.html).

  Настройка действует на уровне кластера Managed Service for PostgreSQL, но ее можно [переопределить на уровне пользователя](settings-list.md#dbms-user-settings).

- **Default transaction read only**{#setting-default-transaction-read-only} <code><b><small>Все интерфейсы</small></b></code>

  Устанавливает режим «только чтение» в каждой новой транзакции для любых таблиц, кроме временных.

  По умолчанию настройка выключена (допускается чтение и запись).

  Подробнее в описании настройки `default_transaction_read_only` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-DEFAULT-TRANSACTION-READ-ONLY).

- **Default with oids**{#setting-default-with-oids} <code><b><small>Все интерфейсы</small></b></code>

  Добавляет столбец `OID` с уникальным идентификатором строки. Настройка действует, если таблица создается:

  - либо без указания `WITH OIDS` и `WITHOUT OIDS`;
  - либо с помощью команды `SELECT INTO`.

  По умолчанию настройка выключена (столбец `OID` не добавляется).

  Функциональность не поддерживается в PostgreSQL начиная с версии `12`. Используйте настройку только для совместимости со старыми приложениями.

  Подробнее в описании настройки `default_with_oids` в [документации PostgreSQL](https://www.postgresql.org/docs/11/runtime-config-compatible.html#GUC-DEFAULT-WITH-OIDS).

- **Effective cache size**{#setting-effective-cache-size} <code><b><small>Все интерфейсы</small></b></code>

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

  Минимальное значение — `0`, максимальное значение — `549755813888` (512 ГБ), по умолчанию — `107374182400` (100 ГБ).

  Подробнее в описании настройки `effective_cache_size` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-EFFECTIVE-CACHE-SIZE).

- **Effective io concurrency**{#setting-effective-io-concurrency} <code><b><small>Все интерфейсы</small></b></code>

  Максимальное число параллельных операций дискового ввода-вывода в отдельной сессии работы с БД. Чем больше это число, тем больше операций PostgreSQL будет пытаться выполнить параллельно в отдельной сессии.

  Минимальное значение — `0`, максимальное значение — `1000`, по умолчанию — `1`.

  Подробнее в описании настройки `effective_io_concurrency` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-EFFECTIVE-IO-CONCURRENCY).

- **Enable async append**{#setting-enable-async-append} <code><b><small>Все интерфейсы</small></b></code>

  Разрешает планировщику учитывать асинхронное выполнение плана запроса на разных хостах при добавлении данных из внешних источников.

  По умолчанию настройка включена.

  Функциональность поддерживается в PostgreSQL начиная с версии 14.

  Подробнее в описании настройки `enable_async_append` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-ENABLE-ASYNC-APPEND).

- **Enable bitmapscan**{#setting-enable-bitmapscan} <code><b><small>Все интерфейсы</small></b></code>

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

  1. Сканируется индекс (Bitmap Index Scan) и строится битовая карта, в которой отмечаются те строки, которые должны быть прочитаны в запросе.
  1. Выполняется сканирование таблицы (Bitmap Heap Scan). При этом:

     - страницы читаются последовательно (увеличивается шанс воспользоваться кешем ОС);
     - каждая страница просматривается только один раз.

  Настройка эффективна при повторных запросах к таблицам.

  По умолчанию настройка включена.

  Подробнее в описании настройки `enable_bitmapscan` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-ENABLE-BITMAPSCAN).

- **Enable gathermerge**{#setting-enable-gathermerge} <code><b><small>Все интерфейсы</small></b></code>

  Разрешает планировщику использовать узел Gather Merge, чтобы выполнить слияние строк, полученных в результате работы параллельных процессов, и сохранить порядок, в котором эти строки были получены.

  По умолчанию настройка включена.

  Функциональность поддерживается в PostgreSQL начиная с версии 14.

  Подробнее в описании настройки `enable_gathermerge` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-ENABLE-GATHERMERGE).

- **Enable group by reordering**{#setting-enable-group-by-reordering} <code><b><small>Все интерфейсы</small></b></code>

  Определяет, может ли планировщик запросов создавать план, в котором ключи в блоке `GROUP BY` будут отсортированы в другом порядке, например в порядке сканирования индекса.

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

  Если настройка выключена, планировщик запросов создаст план, в котором ключи в блоке `GROUP BY` будут отсортированы в соответствии с предложениями в блоке `ORDER BY` при его наличии. При отсутствии блока `ORDER BY` ключи в блоке `GROUP BY` не сортируются (используется тот порядок, что задан в `GROUP BY`).

  Подробнее в описании настройки `enable_group_by_reordering` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-ENABLE-GROUPBY-REORDERING).

- **Enable hashagg**{#setting-enable-hashagg} <code><b><small>Все интерфейсы</small></b></code>

  Разрешает планировщику строить хеш-таблицу из набора результатов, даже если это явно не указано в запросе. Настройка эффективна при частых запросах без сортировок к таблицам с большим объемом данных.

  По умолчанию настройка включена.

  Подробнее в описании настройки `enable_hashagg` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-ENABLE-HASHAGG).

- **Enable hashjoin**{#setting-enable-hashjoin} <code><b><small>Все интерфейсы</small></b></code>

  Разрешает планировщику строить объединения (`JOIN`) таблиц по хеш-значениям строк, даже если это явно не указано в запросе. Настройка эффективна при работе с большими объемами данных или когда таблицы не отсортированы по столбцам, по которым производится объединение.

  По умолчанию настройка включена.

  Подробнее в описании настройки `enable_hashjoin` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-ENABLE-HASHJOIN).

- **Enable incremental sort**{#setting-enable-incremental-sort} <code><b><small>Все интерфейсы</small></b></code>

  Разрешает планировщику использование инкрементной сортировки. Такой способ сортировки позволяет уменьшить время выполнения запроса и объем требуемой оперативной памяти, если необходимо упорядочить строки по нескольким столбцам, причем по одному или нескольким из них сортировка уже выполнена.

  По умолчанию настройка включена.

  Функциональность поддерживается в PostgreSQL начиная с версии 13.

  Подробнее в описании настройки `enable_incremental_sort` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-ENABLE-INCREMENTAL-SORT).

- **Enable indexonlyscan**{#setting-enable-indexonlyscan} <code><b><small>Все интерфейсы</small></b></code>

  Разрешает планировщику использовать сканирование индекса таблиц без обращения к данным, даже если это явно не указано в запросе.

  По умолчанию настройка включена.

  Подробнее в описании настройки `enable_indexonlyscan` в [документации PostgreSQL](https://www.postgresql.org/docs/current/indexes-index-only-scans.html).

- **Enable indexscan**{#setting-enable-indexscan} <code><b><small>Все интерфейсы</small></b></code>

  Разрешает планировщику использовать сканирование индекса таблиц, даже если это явно не указано в запросе.

  По умолчанию настройка включена.

  Подробнее в описании настройки `enable_indexscan` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-ENABLE-INDEXSCAN).

- **Enable material**{#setting-enable-material} <code><b><small>Все интерфейсы</small></b></code>

  Разрешает планировщику использовать запросы материализации.

  По умолчанию настройка включена.

  Подробнее в описании настройки `enable_material` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-ENABLE-MATERIAL).

- **Enable memoize**{#setting-enable-memoize} <code><b><small>Все интерфейсы</small></b></code>

  Разрешает планировщику использовать планы с мемоизацией для кеширования результатов параметризованного сканирования внутри соединений вложенным циклом (Nested Loop Joins). Такой план позволяет пропускать сканирование нижележащих планов, если в кеше уже есть результаты, соответствующие текущим параметрам. Менее востребованные результаты могут быть удалены из кеша, если для новых записей не хватает места.

  По умолчанию настройка включена.

  Подробнее в описании настройки `enable_memoize` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-ENABLE-MEMOIZE).

- **Enable mergejoin**{#setting-enable-mergejoin} <code><b><small>Все интерфейсы</small></b></code>

  Разрешает планировщику использовать слияние операций `JOIN` при объединении таблиц.

  По умолчанию настройка включена.

  Подробнее в описании настройки `enable_mergejoin` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-ENABLE-MERGEJOIN).

- **Enable nestloop**{#setting-enable-nestloop} <code><b><small>Все интерфейсы</small></b></code>

  Разрешает планировщику использовать объединения (`JOIN`) с вложенными циклами. При выключенной настройке планировщик будет использовать другие методы.

  По умолчанию настройка включена.

  Подробнее в описании настройки `enable_nestloop` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-ENABLE-NESTLOOP).

- **Enable parallel append**{#setting-enable-parallel-append} <code><b><small>Все интерфейсы</small></b></code>

  Разрешает планировщику использовать распараллеливание при добавлении данных.

  По умолчанию настройка включена.

  Подробнее в описании настройки `enable_parallel_append` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-ENABLE-PARALLEL-APPEND).

- **Enable parallel hash**{#setting-enable-parallel-hash} <code><b><small>Все интерфейсы</small></b></code>

  Разрешает планировщику строить объединения по хешу строк с распараллеливанием хеширования. Настройка действует при включенной настройке [Enable hashjoin](#setting-enable-hashjoin).

  По умолчанию настройка включена.

  Подробнее в описании настройки `enable_parallel_hash` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-ENABLE-PARALLEL-HASH).

- **Enable partition pruning**{#setting-enable-partition-pruning} <code><b><small>Все интерфейсы</small></b></code>

  Разрешает планировщику удалять ненужные партиции из планов запроса к партиционированным таблицам.

  По умолчанию настройка включена.

  Подробнее в описании настройки `enable_partition_pruning` в [документации PostgreSQL](https://www.postgresql.org/docs/current/ddl-partitioning.html#DDL-PARTITION-PRUNING).

- **Enable partitionwise aggregate**{#setting-enable-partitionwise-aggregate} <code><b><small>Все интерфейсы</small></b></code>

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

  По умолчанию настройка выключена (планировщик не учитывает партиционирование).

  Подробнее в описании настройки `enable_partitionwise_aggregate` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-ENABLE-PARTITIONWISE-AGGREGATE).

- **Enable partitionwise join**{#setting-enable-partition-join} <code><b><small>Все интерфейсы</small></b></code>

  Разрешает планировщику использовать партиционирование таблиц при планировании запросов. Настройка позволяет выполнять запросы объединения партиционированных таблиц через объединение соответствующих партиций.

  По умолчанию настройка выключена (планировщик не учитывает партиционирование).

  Подробнее в описании настройки `enable_partitionwise_join` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-ENABLE-PARTITIONWISE-JOIN).

- **Enable seqscan**{#setting-enable-seqscan} <code><b><small>Все интерфейсы</small></b></code>

  Разрешает планировщику использовать планы последовательного сканирования таблиц.

  По умолчанию настройка включена.

  Подробнее в описании настройки `enable_seqscan` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#RUNTIME-CONFIG-QUERY-ENABLE).

- **Enable sort**{#setting-enable-sort} <code><b><small>Все интерфейсы</small></b></code>

  Разрешает планировщику использовать шаги с явной сортировкой.

  По умолчанию настройка включена.

  Подробнее в описании настройки `enable_sort` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-ENABLE-SORT).

- **Enable tidscan**{#setting-enable-tidscan} <code><b><small>Все интерфейсы</small></b></code>

  Разрешает планировщику использовать планы сканирования TID (tuple identifier) для ускорения выполнения запросов.

  По умолчанию настройка включена (планировщик выполняет сканирование TID).

  Подробнее в описании настройки `enable_tidscan` в [документации PostgreSQL](https://www.postgresql.org/docs/current/ddl-system-columns.html).

- **Escape string warning**{#setting-escape-string-warning} <code><b><small>Все интерфейсы</small></b></code>

  Включает предупреждение о наличии в запросе символа `\` в обычной строковой константе (с синтаксисом `'...'`). Настройка работает только при отключенном параметре [Standard conforming strings](#setting-standard-strings).

  По умолчанию настройка включена.

  Подробнее в описании настройки `escape_string_warning` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-compatible.html#GUC-ESCAPE-STRING-WARNING).

- **Exit on error**{#setting-exit-on-error} <code><b><small>Все интерфейсы</small></b></code>

  Включает прерывание сессии в случае любой ошибки в запросе.

  По умолчанию настройка выключена.

  Подробнее в описании настройки `exit_on_error` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-error-handling.html).

- **Force parallel mode**{#setting-force-parallel-mode} <code><b><small>Все интерфейсы</small></b></code>

  Настройка доступна в версиях PostgreSQL `15` и ниже.

  Позволяет распараллеливать запрос для тестирования:

  - `off` (`FORCE_PARALLEL_MODE_OFF` для Terraform, API и CLI) — использовать параллельный режим, только когда ожидается увеличение производительности.
  - `on` (`FORCE_PARALLEL_MODE_ON` для Terraform, API и CLI) — принудительно распараллеливать все запросы, для которых это безопасно.
  - `regress` (`FORCE_PARALLEL_MODE_REGRESS` для Terraform, API и CLI) — эквивалентен `on`, но стандартный вывод такой же, как при выполнении в режиме `off`.

  Значение по умолчанию — `off`.

  Подробнее в описании настройки `force_parallel_mode` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-developer.html).

- **From collapse limit**{#setting-from-collapse-limit} <code><b><small>Все интерфейсы</small></b></code>

  Пока количество элементов в списке `FROM` не превышает значение настройки, планировщик будет объединять вложенные запросы с внешним запросом. При уменьшении значения сокращается время планирования, но план запроса может стать менее эффективным.

  Минимальное значение — `1`, максимальное значение — `2147483647`, по умолчанию — `8`.

  Подробнее в описании настройки `from_collapse_limit` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-FROM-COLLAPSE-LIMIT).

- **Geqo**{#setting-geqo} <code><b><small>Все интерфейсы</small></b></code>

  Включает генетическую оптимизацию запросов ([GEQO](https://www.postgresql.org/docs/current/geqo.html)).

  По умолчанию настройка включена.

  Подробнее в описании настройки `geqo` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-GEQO).

- **Geqo effort**{#setting-geqo-effort} <code><b><small>Все интерфейсы</small></b></code>

  Задает соотношение между временем на планирование запроса и качеством плана запроса в алгоритме [GEQO](https://www.postgresql.org/docs/current/geqo.html).

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

  Минимальное значение — `1`, максимальное значение — `10`, значение по умолчанию — `5`.

  Подробнее в описании настройки `geqo_effort` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-GEQO-EFFORT).

- **Geqo generations**{#setting-geqo-generations} <code><b><small>Все интерфейсы</small></b></code>

  Задает количество итераций алгоритма [GEQO](https://www.postgresql.org/docs/current/geqo.html).

  Полезные значения находятся в диапазоне от `100` до `1000`.

  Если значение настройки равно `0` (по умолчанию), то количество итераций алгоритма выбирается на основании настройки [**Geqo pool size**](#setting-geqo-pool-size).

  Подробнее в описании настройки `geqo_generations` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-GEQO-GENERATIONS).

- **Geqo pool size**{#setting-geqo-pool-size} <code><b><small>Все интерфейсы</small></b></code>

  Задает количество особей в генетической популяции в алгоритме [GEQO](https://www.postgresql.org/docs/current/geqo.html).

  Не может равняться `1`. Полезные значения находятся в диапазоне от `100` до `1000`.

  Если значение настройки равно `0` (по умолчанию), то количество особей выбирается в зависимости от настройки [**Geqo effort**](#setting-geqo-effort) и количества таблиц в запросе.

  Подробнее в описании настройки `geqo_pool_size` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-GEQO-POOL-SIZE).

- **Geqo seed**{#setting-geqo-seed} <code><b><small>Все интерфейсы</small></b></code>

  Задает начальное значение для генератора случайных чисел, используемого алгоритмом [GEQO](https://www.postgresql.org/docs/current/geqo.html) при выборе путей в пространстве поиска порядка соединений.

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

  Минимальное значение — `0`, максимальное значение — `1`, значение по умолчанию — `0`.

  Подробнее в описании настройки `geqo_seed` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-GEQO-SEED).

- **Geqo selection bias**{#setting-geqo-selection-bias} <code><b><small>Все интерфейсы</small></b></code>

  Задает избирательное давление отбора внутри популяции, используемое в алгоритме [GEQO](https://www.postgresql.org/docs/current/geqo.html).

  Минимальное значение — `1.50`, максимальное значение — `2.00`, значение по умолчанию — `2.00`.

  Подробнее в описании настройки `geqo_selection_bias` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-GEQO-SELECTION-BIAS).

- **Geqo threshold**{#setting-geqo-threshold} <code><b><small>Все интерфейсы</small></b></code>

  Алгоритм [GEQO](https://www.postgresql.org/docs/current/geqo.html) будет использоваться для планирования только таких запросов, в которых количество таблиц в [предложении `FROM`](https://www.postgresql.org/docs/current/sql-select.html#SQL-FROM) больше или равно значению данной настройки.

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

  Минимальное значение — `2`, максимальное значение — `2147483647`, значение по умолчанию — `12`.

  Подробнее в описании настройки `geqo_threshold` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-GEQO-THRESHOLD).

- **Gin pending list limit**{#setting-gin-list-limit} <code><b><small>Все интерфейсы</small></b></code>

  Максимальный размер (в байтах) очереди записей [индекса GIN](https://www.postgresql.org/docs/current/gin-intro.html). Очередь используется, когда включен режим `fastupdate`. Если размер очереди превышает заданный предел, записи из нее массово переносятся в основную структуру данных индекса GIN, а очередь очищается.

  Минимальное значение — `64`, максимальное значение — `2147483647` (2 ГБ), по умолчанию — `4194304`.

  Подробнее в описании настройки `gin_pending_list_limit` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-GIN-PENDING-LIST-LIMIT).

- **Hash mem multiplier**{#setting-hash-mem-multiplier} <code><b><small>Все интерфейсы</small></b></code>

  Определяет максимальный объем памяти, доступный для операций с хеш-таблицами. Объем вычисляется умножением значения настройки на значение [Work mem](#setting-work-mem).

  Минимальное значение — `0.0`, максимальное значение — `1000.0`, по умолчанию — `1.0`.

  Функциональность поддерживается в PostgreSQL начиная с версии 13.

  Подробнее в описании настройки `hash_mem_multiplier` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-HASH-MEM-MULTIPLIER).

- **Idle in transaction session timeout**{#setting-idle-transaction-timeout} <code><b><small>Все интерфейсы</small></b></code>

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

  Минимальное значение — `0`, максимальное значение — `2147483647`, по умолчанию — `0`.

  Подробнее в описании настройки `idle_in_transaction_session_timeout` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-IDLE-IN-TRANSACTION-SESSION-TIMEOUT).

- **Idle session timeout**{#setting-idle-session-timeout} <code><b><small>Все интерфейсы</small></b></code>

  Время простоя открытой сессии (в миллисекундах) при отсутствии открытых транзакций. При превышении этого времени сессия будет завершена.

  Минимальное значение — `0`, максимальное значение — `2147483647`, по умолчанию — `0`.

  Подробнее в описании настройки `idle_session_timeout` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-IDLE-SESSION-TIMEOUT).

- **Jit**{#setting-jit} <code><b><small>Все интерфейсы</small></b></code>

  Включает [JIT-компиляцию запросов](https://www.postgresql.org/docs/current/jit.html) (just-in-time compilation) для PostgreSQL. Если настройка включена, то SQL-запросы компилируются в машинный код прямо во время выполнения. Это ускорит выполнение сложных запросов, которые требовательны к ресурсам CPU.

  По умолчанию настройка выключена.

  Подробнее в описании настройки `jit` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-JIT).

- **Join collapse limit**{#setting-join-collapse-limit} <code><b><small>Все интерфейсы</small></b></code>

  Пока количество элементов в списке `FROM` не превышает значение настройки, планировщик будет переносить в список явные инструкции `JOIN` (за исключением `FULL JOIN`). При уменьшении значения сокращается время планирования, но план запроса может стать менее эффективным.

  Минимальное значение — `1`, максимальное значение — `2147483647`, по умолчанию — `8`.

  Подробнее в описании настройки `join_collapse_limit` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-JOIN-COLLAPSE-LIMIT).

- **Lo compat privileges**{#setting-lo-compat-privileges} <code><b><small>Все интерфейсы</small></b></code>

  Отключает проверку прав доступа для больших объектов. До версии `9.0` права доступа не действовали на большие объекты, и они были доступны для чтения и записи всем пользователям. Включите настройку, если требуется совместимость с версиями PostgreSQL ниже `9.0`.

  По умолчанию настройка выключена (проверки прав доступа включены).

  Подробнее в описании настройки `lo_compat_privileges` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-compatible.html#GUC-LO-COMPAT-PRIVILEGES).

- **Lock timeout**{#setting-lock-timeout} <code><b><small>Все интерфейсы</small></b></code>

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

  Минимальное значение — `0` (контроль длительности отключен, ожидать получения блокировки можно сколь угодно долго), максимальное значение — `2147483647`, по умолчанию — `0`.

  Подробнее в описании настройки `lock_timeout` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-LOCK-TIMEOUT).

  Настройка действует на уровне кластера Managed Service for PostgreSQL, но ее можно [переопределить на уровне пользователя](settings-list.md#dbms-user-settings).

- **Log autovacuum min duration**{#setting-log-autovacuum-min-duration} <code><b><small>Все интерфейсы</small></b></code>

  Задает время выполнения действия автоочистки (в миллисекундах), при превышении которого информация об этом действии записывается в лог.

  При значении `0` в логе фиксируются все действия автоочистки. Значение `-1` отключает логирование действий автоочистки.

  Значение по умолчанию — `1000`.

  Подробнее в описании настройки `log_autovacuum_min_duration` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-AUTOVACUUM-MIN-DURATION).

- **Log checkpoints**{#setting-log-checkpoints} <code><b><small>Все интерфейсы</small></b></code>

  Включает логирование выполнения контрольных точек и точек перезапуска сервера.

  По умолчанию настройка выключена (логирование не ведется).

  Подробнее в описании настройки `log_checkpoints` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-CHECKPOINTS).

- **Log connections**{#setting-log-connections} <code><b><small>Все интерфейсы</small></b></code>

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

  По умолчанию настройка выключена (логирование не ведется).

  Подробнее в описании настройки `log_connections` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-CONNECTIONS).

- **Log disconnections**{#setting-log-disconnections} <code><b><small>Все интерфейсы</small></b></code>

  Включает логирование завершения сессий.

  По умолчанию настройка выключена (логирование не ведется).

  Подробнее в описании настройки `log_disconnections` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-DISCONNECTIONS).

- **Log duration**{#setting-log-duration} <code><b><small>Все интерфейсы</small></b></code>

  Включает логирование длительности каждой завершенной команды.

  По умолчанию настройка выключена (логирование не выполняется).

  Подробнее в описании настройки `log_duration` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-DURATION).

- **Log error verbosity**{#setting-log-error-verbosity} <code><b><small>Все интерфейсы</small></b></code>

  Задает уровень детализации информации в логе PostgreSQL для каждого сообщения. Уровни детализации лога в порядке увеличения информативности:

  - `terse` (`LOG_ERROR_VERBOSITY_TERSE` для Terraform, CLI и API). Из сообщения об ошибке исключаются поля `DETAIL`, `HINT`, `QUERY` и `CONTEXT`.
  - `default` (`LOG_ERROR_VERBOSITY_DEFAULT` для Terraform, CLI и API). По умолчанию.
  - `verbose` (`LOG_ERROR_VERBOSITY_VERBOSE` для Terraform, CLI и API). В сообщение об ошибке включается код ошибки `SQLSTATE`, а также имя файла с исходным кодом, имя функции и номер строки, сгенерировавшей ошибку.

  Подробнее в описании настройки `log_error_verbosity` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-ERROR-VERBOSITY).

- **Log lock waits**{#setting-log-lock-waits} <code><b><small>Все интерфейсы</small></b></code>

  Управляет логированием продолжительных ожиданий блокировки. При включенной настройке в логе делается запись, когда в сессии PostgreSQL время ожидания получения блокировки превышает значение настройки [Deadlock timeout](#setting-deadlock-timeout).

  По умолчанию настройка выключена.

  Подробнее в описании настройки `log_lock_waits` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-LOCK-WAITS).

- **Log min duration sample**{#setting-log-min-duration-sample} <code><b><small>Все интерфейсы</small></b></code>

  Настройка работает так же, как [Log min duration statement](#setting-log-min-duration-statement), но применяется только к командам, указанным в параметре [Log statement sample rate](#setting-log-statement-sample-rate).

  При значении `0` логируется время работы всех указанных команд.

  Минимальное значение — `-1` (отключает логирование времени работы команд), максимальное значение — `2147483647`, по умолчанию — `-1`.

  Функциональность поддерживается в PostgreSQL начиная с версии 13.

  Подробнее в описании настройки `log_min_duration_sample` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-MIN-DURATION-SAMPLE).

- **Log min duration statement**{#setting-log-min-duration-statement} <code><b><small>Все интерфейсы</small></b></code>

  Задает минимальное время работы команды (в миллисекундах), при котором команда будет записана в лог.

  При значении `0` логируется время работы всех команд.

  Минимальное значение — `-1` (отключает логирование времени работы), максимальное значение — `2147483647`, по умолчанию — `-1`.

  Подробнее в описании настройки `log_min_duration_statement` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-MIN-DURATION-STATEMENT).

  Настройка действует на уровне кластера Managed Service for PostgreSQL, но ее можно [переопределить на уровне пользователя](settings-list.md#dbms-user-settings).

- **Log min error statement**{#setting-log-min-error-statement} <code><b><small>Все интерфейсы</small></b></code>

  Определяет уровень логирования ошибок выполнения команд SQL. Сообщение о выполнении команды будет записано в лог, если он завершится ошибкой с указанным уровнем важности или выше. Возможные значения: `DEBUG5`, `DEBUG4`, `DEBUG3`, `DEBUG2`, `DEBUG1`, `INFO`, `NOTICE`, `WARNING`, `ERROR`, `LOG`, `FATAL` и `PANIC`.

  По умолчанию используется `ERROR`. Это означает, что в лог PostgreSQL будут записаны все команды, завершившиеся сообщением с уровнем важности `ERROR`, `LOG`, `FATAL` и `PANIC`.

  Чтобы отключить запись большинства команд с ошибками, выберите значение `PANIC`.

  Подробнее в описании настройки `log_min_error_statement` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-MIN-ERROR-STATEMENT).

- **Log min messages**{#setting-log-min-messages} <code><b><small>Все интерфейсы</small></b></code>

  Определяет уровень логирования PostgreSQL. Записываются все сообщения выбранного уровня важности и выше. Возможные значения (по возрастанию важности): `DEBUG5`, `DEBUG4`, `DEBUG3`, `DEBUG2`, `DEBUG1`, `INFO`, `NOTICE`, `WARNING`, `ERROR`, `LOG`, `FATAL` и `PANIC`.

  По умолчанию используется `WARNING`. Это означает, что в лог PostgreSQL будут записаны все сообщения с уровнем важности `WARNING`, `ERROR`, `LOG`, `FATAL` и `PANIC`.

  Чтобы отключить запись большинства сообщений, выберите значение `PANIC`.

  Подробнее в описании настройки `log_min_messages` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-MIN-MESSAGES).

- **Log parameter max length**{#setting-log-parameter-max-length} <code><b><small>Все интерфейсы</small></b></code>

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

  При значении `0` логирование отключено.

  Минимальное значение — `-1` (значения параметров логируются полностью), максимальное значение — `1073741823`. По умолчанию установлено минимальное значение.

  Функциональность поддерживается в PostgreSQL начиная с версии 13.

  Подробнее в описании настройки `log_parameter_max_length` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-PARAMETER-MAX-LENGTH).

- **Log parameter max length on error**{#setting-log-parameter-max-length} <code><b><small>Все интерфейсы</small></b></code>

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

  При значении `0` логирование отключено.

  Минимальное значение — `-1` (значения параметров логируются полностью), максимальное значение — `1073741823`. Значение по умолчанию — `0`.

  Функциональность поддерживается в PostgreSQL начиная с версии 13.

  Подробнее в описании настройки `log_parameter_max_length_on_error` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-PARAMETER-MAX-LENGTH-ON-ERROR).

- **Log recovery conflict waits**{#setting-log-recovery-conflict-waits} <code><b><small>Все интерфейсы</small></b></code>

  Разрешает фиксировать в логах задержки репликации, возникающие из-за конфликтов восстановления при чтении WAL. Записи в лог будут добавлены, если время ожидания разрешения конфликта превысит таймаут, заданный настройкой [Deadlock timeout](#setting-deadlock-timeout).

  По умолчанию настройка выключена.

  Функциональность поддерживается в PostgreSQL начиная с версии 14.

  Подробнее в описании настройки `log_recovery_conflict_waits` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-RECOVERY-CONFLICT-WAITS).

- **Log replication commands**{#setting-log-replication-commands} <code><b><small>Все интерфейсы</small></b></code>

  Определяет, записывать ли в лог сервера все команды репликации и все случаи получения/освобождения слота репликации процессом `walsender`.

  По умолчанию настройка выключена.

  Подробнее в описании настройки `log_replication_commands` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-REPLICATION-COMMANDS).

- **Log statement**{#setting-log-statement} <code><b><small>Все интерфейсы</small></b></code>

  Фильтр команд SQL, которые должны записываться в лог PostgreSQL:

  - `none` (`LOG_STATEMENT_NONE` для Terraform, CLI и API) — фильтр отключен, команды SQL не записываются в лог.
  - `ddl` (`LOG_STATEMENT_DDL` для Terraform, CLI и API) — в лог записываются команды SQL, которые позволяют изменять определения структур данных (`CREATE`, `ALTER`, `DROP` и т. п.).
  - `mod` (`LOG_STATEMENT_MOD` для Terraform, CLI и API) — в лог записываются команды SQL, попадающие под фильтр `ddl`, и команды, позволяющие изменять данные (`INSERT`, `UPDATE` и т. п.).
  - `all` (`LOG_STATEMENT_ALL` для Terraform, CLI и API) — в лог записываются все команды SQL.

  Значение по умолчанию — `none`.

  Подробнее в описании настройки `log_statement` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-logging.html).

  Настройка действует на уровне кластера Managed Service for PostgreSQL, но ее можно [переопределить на уровне пользователя](settings-list.md#dbms-user-settings).

- **Log statement sample rate**{#setting-log-statement-sample-rate} <code><b><small>Все интерфейсы</small></b></code>

  Доля команд SQL, которые будут записываться в лог дополнительно (помимо команд, записываемых по другим причинам).

  Минимальное значение — `0.0`, максимальное значение — `1.0`, по умолчанию — `0.0`.

  Функциональность поддерживается в PostgreSQL начиная с версии 13.

  Подробнее в описании настройки `log_statement_sample_rate` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-STATEMENT-SAMPLE-RATE).

- **Log temp files**{#setting-log-temp-files} <code><b><small>Все интерфейсы</small></b></code>

  Задает минимальный размер временного файла, при удалении которого информация о нем будет записана в лог PostgreSQL.

  Минимальное значение — `-1` (информация об удаленных файлах не логируется), максимальное значение — `2147483647` (2 ГБ), при значении `0` в лог записываются размеры и имена всех временных файлов. По умолчанию — `-1`.

  Подробнее в описании настройки `log_temp_files` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-TEMP-FILES).

- **Log transaction sample rate**{#setting-log-transaction-sample-rate} <code><b><small>Все интерфейсы</small></b></code>

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

  Минимальное значение — `0.0`, максимальное значение — `1.0`.

  Функциональность поддерживается в PostgreSQL начиная с версии 12.

  Подробнее в описании настройки `log_transaction_sample_rate` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-TRANSACTION-SAMPLE-RATE).

- **Logical decoding work mem**{#setting-logical-decoding-work-mem} <code><b><small>Все интерфейсы</small></b></code>

  Максимальный объем памяти (в байтах), выделяемый для [логического декодирования](https://www.postgresql.org/docs/current/logicaldecoding.html) перед записью на локальный диск. Настройка ограничивает объем памяти, используемый в соединении для логической репликации.

  Минимальное значение — `65536` (64 КБ), максимальное значение — `1099511627776` (1 ТБ), по умолчанию – `67108864` (64 МБ).

  Функциональность поддерживается в PostgreSQL начиная с версии 13.

  Подробнее в описании настройки `logical_decoding_work_mem` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-LOGICAL-DECODING-WORK-MEM).

- **Maintenance io concurrency**{#setting-maintenance-io-concurrency} <code><b><small>Все интерфейсы</small></b></code>

  Максимальное число параллельных операций дискового ввода-вывода при обслуживании PostgreSQL командами `VACUUM`, `CREATE INDEX` и `ALTER TABLE ADD FOREIGN KEY`, в отдельной сессии работы с БД. Чем больше это число, тем больше команд обслуживания PostgreSQL будет пытаться выполнить параллельно в отдельной сессии.

  Минимальное значение — `0`, максимальное значение — `1000`, по умолчанию — `10`.

  Функциональность поддерживается в PostgreSQL начиная с версии 13.

  Подробнее в описании настройки `maintenance_io_concurrency` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-MAINTENANCE-IO-CONCURRENCY).

- **Maintenance work mem**{#setting-maintenance-work-mem} <code><b><small>Все интерфейсы</small></b></code>

  Максимальный объем памяти (в байтах) для операций обслуживания PostgreSQL, таких как `VACUUM`, `CREATE INDEX` и `ALTER TABLE ADD FOREIGN KEY`. Значение должно быть кратно 1024.

  Минимальное значение — `1048576` (1 МБ), максимальное значение — `137438953472` (128 ГБ), по умолчанию — `67108864` (64 МБ).

  Подробнее в описании настройки `maintenance_work_mem` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-MAINTENANCE-WORK-MEM).

- **Max connections**{#setting-max-connections} <code><b><small>Все интерфейсы</small></b></code>

  Максимальное число одновременных подключений к хосту PostgreSQL.

  Минимальное значение — `16` (`1` пользовательское подключение и `15` зарезервированных сервисом), максимальное значение и значение по умолчанию [зависят от выбранного класса хостов](#settings-instance-dependent) и задаются формулой:

  ```text
  200 × <количество_vCPU_на_одном_хосте>
  ```

  Для хостов с гарантированной долей vCPU ниже 100% (`burstable`) используется фиксированное максимальное значение — `200`.

  По умолчанию установлено максимальное значение.

  {% note warning %}
  
  Managed Service for PostgreSQL резервирует 15 подключений для служебных пользователей на каждом PostgreSQL-хосте. Например, если для кластера выставлено значение настройки [Max connections](settings-list.md#setting-max-connections) `100`, то вы можете зарезервировать не больше 85 подключений для пользователей кластера.
  
  {% endnote %}

  Подробнее в описании настройки `max_connections` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-MAX-CONNECTIONS).

- **Max locks per transaction**{#setting-max-locks-transaction} <code><b><small>Все интерфейсы</small></b></code>

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

  Минимальное значение — `10`, максимальное значение — `2147483647`, по умолчанию — `64`.

  Подробнее в описании настройки `max_locks_per_transaction` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-locks.html#GUC-MAX-LOCKS-PER-TRANSACTION).

- **Max logical replication workers**{#setting-max-logical-replication-workers} <code><b><small>Все интерфейсы</small></b></code>

  Максимальное число работающих процессов логической репликации PostgreSQL.

  Минимальное значение — `4`, максимальное значение — `100`. По умолчанию установлено минимальное значение.

  Подробнее в описании настройки `max_logical_replication_workers` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-replication.html#GUC-MAX-LOGICAL-REPLICATION-WORKERS).

- **Max parallel maintenance workers**{#setting-max-parallel-maintenance-workers} <code><b><small>Все интерфейсы</small></b></code>

  Максимальное число параллельно работающих процессов PostgreSQL, инициированных одной служебной командой (например, `CREATE INDEX`).

  Минимальное значение — `0`, максимальное значение — `1024`, по умолчанию — `2`.

  Подробнее в описании настройки `max_parallel_maintenance_workers` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-MAX-PARALLEL-MAINTENANCE-WORKERS).

- **Max parallel workers**{#setting-max-parallel-workers} <code><b><small>Все интерфейсы</small></b></code>

  Максимальное число параллельно работающих процессов PostgreSQL.

  Минимальное значение — `0`, максимальное значение — `1024`, по умолчанию — `8`.

  Подробнее в описании настройки `max_parallel_workers` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-MAX-PARALLEL-WORKERS).

- **Max parallel workers per gather**{#setting-max-parallel-workers-gather} <code><b><small>Все интерфейсы</small></b></code>

  Максимальное число параллельно работающих процессов, которые могут запускаться одним узлом [Gather](https://www.postgresql.org/docs/current/how-parallel-query-works.html).

  Минимальное значение — `0`, максимальное значение — `1024`, по умолчанию — `2`.

  Подробнее в описании настройки `max_parallel_workers_per_gather` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-MAX-PARALLEL-WORKERS-PER-GATHER).

- **Max pred locks per transaction**{#setting-max-pred-locks-transaction} <code><b><small>Все интерфейсы</small></b></code>

  Среднее количество объектов, которые могут быть заблокированы [предикатными блокировками](https://www.postgresql.org/docs/current/transaction-iso.html#XACT-SERIALIZABLE) за одну транзакцию. Отдельные транзакции могут блокировать больше объектов, чем указано в настройке, если общее количество объектов, заблокированных всеми транзакциями, помещается в таблицу блокировок.

  Минимальное значение — `10`, максимальное значение — `2147483647` (2 ГБ), по умолчанию — `64`.

  Подробнее в описании настройки `max_pred_locks_per_transaction` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-locks.html#GUC-MAX-PRED-LOCKS-PER-TRANSACTION).

- **Max prepared transactions**{#setting-max-prepared-transactions} <code><b><small>Все интерфейсы</small></b></code>

  Максимальное число транзакций, которые могут одновременно находиться в [подготовленном состоянии](https://www.postgresql.org/docs/current/sql-prepare-transaction.html).

  Минимальное значение — `0`, максимальное значение — `262143`, по умолчанию — `0`.

  Подробнее в описании настройки `max_prepared_transactions` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-MAX-PREPARED-TRANSACTIONS).

- **Max replication slots**{#setting-max-replication-slots} <code><b><small>Все интерфейсы</small></b></code>

  Максимальное число [слотов репликации](https://www.postgresql.org/docs/current/warm-standby.html#STREAMING-REPLICATION-SLOTS). Слоты репликации автоматически обеспечивают механизм сохранения файлов лога [WAL](https://www.postgresql.org/docs/current/wal-intro.html) (Write-Ahead Log), пока они не будут получены всеми репликами.

  Минимальное значение — `20`, максимальное значение — `100`. По умолчанию установлено минимальное значение.

  Подробнее в описании настройки `max_replication_slots` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-replication.html#GUC-MAX-REPLICATION-SLOTS).

- **Max slot wal keep size**{#setting-max-slot-wal-keep-size} <code><b><small>Все интерфейсы</small></b></code>

  Максимальный размер (в байтах) файлов лога [WAL](https://www.postgresql.org/docs/current/wal-intro.html) (Write-Ahead Log), который хранится на хосте-мастере при репликации.

  Минимальное значение — `67108864` (64 МБ). Максимальное значение — 50% от размера [хранилища](storage.md). Значение по умолчанию — `-1` (не ограничен). Значение должно быть кратно 1024.

  Функциональность поддерживается в PostgreSQL начиная с версии 13.

  Подробнее в описании настройки `max_slot_wal_keep_size` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-replication.html#GUC-MAX-SLOT-WAL-KEEP-SIZE).

- **Max stack depth**{#setting-max-stack-depth} <code><b><small>Все интерфейсы</small></b></code>

  Задает максимальную безопасную глубину стека для исполнителя (в байтах).

  Минимальное значение — `65536`, максимальное — `134217728`, по умолчанию — `2097152` (2 МБ).

  Подробнее в описании настройки `max_stack_depth` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-MAX-STACK-DEPTH).

- **Max standby archive delay**{#setting-max-standby-archive-delay} <code><b><small>Все интерфейсы</small></b></code>

  Время ожидания (в миллисекундах), по истечении которого хост-реплика в режиме горячего резерва начнет отменять запросы, конфликтующие с очередными изменениями в [WAL](https://www.postgresql.org/docs/current/wal-intro.html). Задержка применяется при обработке данных WAL, считываемых из архива.

  Минимальное значение — `-1` (время ожидания не ограничено), максимальное значение — `2147483647`, по умолчанию — `30000` (30 секунд).

  Подробнее в описании настройки `max_standby_archive_delay` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-replication.html#GUC-MAX-STANDBY-ARCHIVE-DELAY).

- **Max standby streaming delay**{#setting-max-standby-streaming-delay} <code><b><small>Все интерфейсы</small></b></code>

  Время ожидания (в миллисекундах), по истечении которого хост-реплика в режиме горячего резерва начнет отменять запросы, конфликтующие с очередными изменениями в [WAL](https://www.postgresql.org/docs/current/wal-intro.html).

  Минимальное значение — `-1` (время ожидания не ограничено), максимальное значение — `2147483647`, по умолчанию — `30000` (30 секунд).

  Подробнее в описании настройки `max_standby_streaming_delay` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-replication.html#GUC-MAX-STANDBY-STREAMING-DELAY).

- **Max wal senders**{#setting-max-wal-senders} <code><b><small>Все интерфейсы</small></b></code>

  Максимальное число параллельных соединений от хостов-источников потока репликации.

  Минимальное значение — `20`, максимальное значение — `100`. По умолчанию установлено минимальное значение.

  Подробнее в описании настройки `max_wal_senders` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-replication.html#GUC-MAX-WAL-SENDERS).

- **Max wal size**{#setting-max-wal-size} <code><b><small>Все интерфейсы</small></b></code>

  Максимальный размер (в байтах) файла [WAL](https://www.postgresql.org/docs/current/wal-intro.html), при достижении которого запускается снятие автоматических контрольных точек.

  Минимальное значение — `2`, максимальное значение [зависит от размера хранилища](#settings-instance-dependent) и равно 10% от этой величины, но не более `8589934592` (8 ГБ). По умолчанию установлено максимальное значение.

  Подробнее в описании настройки `max_wal_size` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-MAX-WAL-SIZE).

- **Max worker processes**{#setting-max-worker-processes} <code><b><small>Все интерфейсы</small></b></code>

  Максимальное число фоновых процессов PostgreSQL, которое можно запустить в текущей системе.

  Минимальное значение — `0`, максимальное значение — `1024`, по умолчанию — `8`.

  Подробнее в описании настройки `max_worker_processes` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-MAX-WORKER-PROCESSES).

- **Min wal size**{#setting-min-wal-size} <code><b><small>Все интерфейсы</small></b></code>

  Объем дискового пространства (в байтах), занимаемый [WAL](https://www.postgresql.org/docs/current/wal-intro.html), при превышении которого старые файлы WAL в контрольных точках удаляются.

  Минимальное значение — `2`, максимальное значение [зависит от размера хранилища](#settings-instance-dependent) и равно 5% от этой величины, но не более `1073741824` (1 ГБ). По умолчанию установлено максимальное значение.

  Подробнее в описании настройки `min_wal_size` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-MIN-WAL-SIZE).

- **Old snapshot threshold**{#setting-old-snapshot-threshold} <code><b><small>Все интерфейсы</small></b></code>

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

  Минимальное значение — `-1` (не ограничено), максимальное значение — `86400000` (24 часа), по умолчанию — `-1`.

  Подробнее в описании настройки `old_snapshot_threshold` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-OLD-SNAPSHOT-THRESHOLD).

- **Online analyze enable**{#setting-online-analyze} <code><b><small>Все интерфейсы</small></b></code>

  Настройка доступна в версиях PostgreSQL с постфиксом `1с`, предназначенных для работы с «1С:Предприятие».

  Включает использование модуля `online_analyze`, который обновляет статистику после операций `INSERT`, `UPDATE`, `DELETE` или `SELECT INTO` в целевых таблицах.

  По умолчанию настройка включена.

- **Operator precedence warning**{#setting-operator-precedence-warning} <code><b><small>Все интерфейсы</small></b></code>

  Разрешает анализатору запроса выдавать предупреждение для всех конструкций, которые поменяли поведение из-за изменения приоритетов команд в версии `9.5`.

  По умолчанию настройка выключена.

  Функциональность не поддерживается в PostgreSQL начиная с версии `14`.

  Подробнее в описании настройки `operator_precedence_warning` в [документации PostgreSQL](https://www.postgresql.org/docs/13/runtime-config-compatible.html#GUC-OPERATOR-PRECEDENCE-WARNING).

- **Parallel leader participation**{#setting-parallel-leader-participation} <code><b><small>Все интерфейсы</small></b></code>

  Разрешает ведущему процессу выполнять план запроса ниже узлов Gather и Gather Merge, не ожидая рабочие процессы.

  По умолчанию настройка включена.

  Подробнее в описании настройки `parallel_leader_participation` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-PARALLEL-LEADER-PARTICIPATION).

- **Password encryption**{#setting-password-encryption} <code><b><small>Все интерфейсы</small></b></code>

  Определяет протокол проверки пароля:

  * `scram-sha-256` (`PASSWORD_ENCRYPTION_SCRAM_SHA_256` для Terraform и API);
  * `md5` (`PASSWORD_ENCRYPTION_MD5` для Terraform и API).

  Значение по умолчанию:

  * для версий PostgreSQL `16` и ниже — `md5`;
  * для версий PostgreSQL `17` и выше — `scram-sha-256`.

  Подробнее в описании настройки `password_encryption` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-PASSWORD-ENCRYPTION).

- **Pg hint plan anywhere**{#setting-pghint-plan-anywhere} <code><b><small>Консоль управления</small></b></code>

  Позволяет использовать «указания» модуля `pg_hint_plan` в особых SQL-комментариях в любом месте запроса. При включенной настройке модуль игнорирует SQL-синтаксис при поиске указаний и возникает риск ложных срабатываний: за указание для выполнения плана запроса может быть принят обычный комментарий.

  По умолчанию настройка выключена.

- **Pg hint plan debug print**{#setting-pghint-plan-debug} <code><b><small>Все интерфейсы</small></b></code>

  Настройка вывода и детализации отладочной информации модулем `pg_hint_plan`. Действует при включенной настройке [Pg hint plan enable hint](#setting-pg-hint-plan-enable). Возможные значения (по возрастанию детализации):

  - `off` (`PG_HINT_PLAN_DEBUG_PRINT_OFF` для Terraform и API) — вывод отключен (по умолчанию);
  - `on` (`PG_HINT_PLAN_DEBUG_PRINT_ON` для Terraform и API);
  - `detailed` (`PG_HINT_PLAN_DEBUG_PRINT_DETAILED` для Terraform и API);
  - `verbose` (`PG_HINT_PLAN_DEBUG_PRINT_VERBOSE` для Terraform и API).

- **Pg hint plan enable hint**{#setting-pg-hint-plan-enable} <code><b><small>Все интерфейсы</small></b></code>

  Включает использование модуля `pg_hint_plan` для корректировки автоматических планов выполнения запросов. Вы можете применять так называемые «указания» в виде простых описаний в особых SQL-комментариях, которые начинаются с `/*` и заканчиваются `*/`.

  По умолчанию настройка включена.

- **Pg hint plan enable hint table**{#setting-pg-hint-plan-enable-hint-table} <code><b><small>Все интерфейсы</small></b></code>

  Включает использование таблицы `hint_plan.hints`. Она содержит «указания» для модуля `pg_hint_plan` и применяется, если нет возможности редактировать запросы. Таблица содержит столбцы:

  - `id` — уникальный номер строки с «указанием». Этот столбец заполняется автоматически.
  - `norm_query_string` — шаблон для выбора запросов, к которым будет относиться «указание». Вместо констант используйте символ `?`. Пробельные символы в шаблоне являются значимыми.
  - `application_name` — приложение-инициатор сессий, в которых будет действовать «указание».
  - `hint` — «указания» без обрамляющей разметки комментариев.

  По умолчанию настройка выключена.

- **Pg hint plan message level**{#setting-pg-hint-plan-message} <code><b><small>Все интерфейсы</small></b></code>

  Уровень отладочных сообщений модуля `pg_hint_plan`, которые будут попадать в лог PostgreSQL. Действует при включенной настройке [Pg hint plan enable hint](#setting-pg-hint-plan-enable). Возможные значения:

  - `error`;
  - `warning`;
  - `notice`;
  - `info` (по умолчанию);
  - `log`;
  - `debug`.

- **Pg qualstats enabled**{#setting-pg-qualstats-enabled} <code><b><small>Все интерфейсы</small></b></code>

  Включает использование модуля `pg_qualstats` для сбора статистики по предикатам в операторах `WHERE` и блоках `JOIN`. Применяется для анализа наиболее часто вычисляемых предикатов запросов.

  По умолчанию настройка включена.

- **Pg qualstats max**{#setting-pg-qualstats-max} <code><b><small>Все интерфейсы</small></b></code>

  Максимальное число отслеживаемых предикатов для модуля `pg_qualstats`. Действует при включенной настройке [Pg qualstats enabled](#setting-pg-qualstats-enabled).

  Минимальное значение — `100`, максимальное значение — `2147483647`, по умолчанию — `1000`.

- **Pg qualstats resolve oids**{#setting-pg-qualstats-resolve-oids} <code><b><small>Все интерфейсы</small></b></code>

  Включает восстановление имен таблиц по идентификатору `OID` в процессе сбора статистики запроса для модуля `pg_qualstats`. Настройка облегчает анализ данных, но требует больше дискового пространства для хранения статистики. Действует при включенной настройке [Pg qualstats enabled](#setting-pg-qualstats-enabled).

  По умолчанию настройка выключена.

- **Pg qualstats sample rate**{#setting-pg-qualstats-sample-rate} <code><b><small>Все интерфейсы</small></b></code>

  Доля запросов (число от 0 до 1), для которых выполняется сбор статистики модулем `pg_qualstats`. Действует при включенной настройке [Pg qualstats enabled](#setting-pg-qualstats-enabled). Особые значения настройки:

  - `0` — отключает настройку;
  - `1` — анализируются все запросы;
  - `-1` — автоматический режим, доля запросов обратна к значению настройки [Max connections](#setting-max-connections) и [зависит от выбранного класса хостов](#settings-instance-dependent).

  По умолчанию используется значение `-1`.

- **Pg qualstats track constants**{#setting-pg-qualstats-track-constants} <code><b><small>Все интерфейсы</small></b></code>

  Включает отслеживание уже встреченных предикатов в последующих запросах при сборе статистики модулем `pg_qualstats`. Действует при включенной настройке [Pg qualstats enabled](#setting-pg-qualstats-enabled).

  По умолчанию настройка включена.

- **Pg trgm similarity threshold**{#setting-pg-trgm-similarity} <code><b><small>Все интерфейсы</small></b></code>

  Задает текущий порог схожести, который использует оператор `%` в модуле `pg_trgm`.

  Значение должно быть в диапазоне от `0` до `1`, по умолчанию — `0.3`.

  Подробнее в описании настройки `pg_trgm.similarity_threshold` в [документации PostgreSQL](https://www.postgresql.org/docs/current/pgtrgm.html#GUC-PGTRGM-SIMILARITY-THRESHOLD).

- **Pg trgm strict word similarity threshold**{#setting-pg-trgm-strict-word-similarity-threshold} <code><b><small>Все интерфейсы</small></b></code>

  Задает текущий порог строгого соответствия слов, который используют операторы `<<%` и `%>>` в модуле `pg_trgm`.

  Значение должно быть в диапазоне от `0` до `1`, по умолчанию — `0.5`.

  Подробнее в описании настройки `pg_trgm.strict_word_similarity_threshold` в [документации PostgreSQL](https://www.postgresql.org/docs/current/pgtrgm.html#GUC-PGTRGM-STRICT-WORD-SIMILARITY-THRESHOLD).

- **Pg trgm word similarity threshold**{#setting-pg-trgm-word-similarity-threshold} <code><b><small>Все интерфейсы</small></b></code>

  Задает текущий порог схожести слов, который используют операторы `<%` и `%>` в модуле `pg_trgm`.

  Значение должно быть в диапазоне от `0` до `1`, по умолчанию — `0.6`.

  Подробнее в описании настройки `pg_trgm.word_similarity_threshold` в [документации PostgreSQL](https://www.postgresql.org/docs/current/pgtrgm.html#GUC-PGTRGM-WORD-SIMILARITY-THRESHOLD).

- **Plan cache mode**{#setting-plan-cache-mode} <code><b><small>Все интерфейсы</small></b></code>

  Определяет, какой тип плана запроса (общий или специализированный) будет использован при выполнении [подготовленных команд](https://www.postgresql.org/docs/current/sql-prepare.html). Возможные значения:

  - `auto` (`PLAN_CACHE_MODE_AUTO` для Terraform и API) — автоматический выбор;
  - `force_custom_plan` (`PLAN_CACHE_MODE_FORCE_CUSTOM_PLAN` для Terraform и API) — принудительно использовать специализированные планы;
  - `force_generic_plan` (`PLAN_CACHE_MODE_FORCE_GENERIC_PLAN` для Terraform и API) — принудительно использовать общие планы.

  Значение по умолчанию — `auto`.

  Функциональность поддерживается в PostgreSQL начиная с версии 12.

  Подробнее в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-PLAN-CACHE_MODE).

- **Plantuner fix empty table**{#setting-plantuner-fix-empty-table} <code><b><small>Все интерфейсы</small></b></code>

  Настройка доступна в версиях PostgreSQL с постфиксом `1с`, предназначенных для работы с «1С:Предприятие».

  Разрешает модулю `plantuner` скрывать от планировщика отдельные индексы, чтобы они не использовались в планах запросов.

  По умолчанию настройка включена.

- **Quote all identifiers**{#setting-quote-identifiers} <code><b><small>Все интерфейсы</small></b></code>

  Включает принудительное обрамление кавычками всех идентификаторов при формировании SQL-запросов из базы данных, например, при выполнении операции `EXPLAIN`.

  По умолчанию настройка выключена.

  Подробнее в описании настройки `quote_all_identifiers` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-compatible.html#GUC-QUOTE-ALL-IDENTIFIERS).

- **Random page cost**{#setting-random-page-cost} <code><b><small>Все интерфейсы</small></b></code>

  Задает планировщику примерную стоимость чтения одной произвольной страницы с диска. Если значение этой настройки меньше, чем у [Seq page cost](#setting-seq-page-cost), планировщик отдаст предпочтение сканированию по индексу.

  Минимальное значение — `0`, по умолчанию — `1`.

  Подробнее в описании настройки `random_page_cost` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-RANDOM-PAGE-COST).

- **Recovery min apply delay**{#setting-recovery-min-delay} <code><b><small>API</small></b></code> <code><b><small>Terraform</small></b></code> <code><b><small>CLI</small></b></code>

  Задает время задержки при применении изменений из WAL (Write-Ahead Log) на хосте-реплике (в миллисекундах). Фиксация транзакции на реплике будет происходить не раньше, чем через заданный интервал времени после фиксации на хосте-мастере.

  Минимальное значение — `0`, максимальное значение — `2147483647`, по умолчанию — `0`.

  Подробнее в описании настройки `recovery_min_apply_delay` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-replication.html#GUC-RECOVERY-MIN-APPLY-DELAY).

- **Row security**{#setting-row-security} <code><b><small>Все интерфейсы</small></b></code>

  Управляет обработкой запросов, к которым применима как минимум одна [политика защиты строк](https://www.postgresql.org/docs/current/sql-createpolicy.html). При выключении настройки такие запросы будут выдавать ошибку.

  По умолчанию настройка включена.

  Подробнее в описании настройки `row_security` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-ROW-SECURITY).

- **Search path**{#setting-search-path} <code><b><small>Все интерфейсы</small></b></code>

  Список имен схем БД через запятую. При обращении к объектам, размещенным в перечисленных схемах, можно не указывать имя схемы.

  Значение по умолчанию — `$user, public` (схема текущего пользователя и схема `public`).

  Подробнее в описании настройки `search_path` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-SEARCH-PATH).

- **Seq page cost**{#setting-seq-page-cost} <code><b><small>Все интерфейсы</small></b></code>

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

  Минимальное значение — `0`, по умолчанию — `1`.

  Подробнее в описании настройки `seq_page_cost` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS).

- **Session duration timeout**{#setting-session-duration-timeout} <code><b><small>Все интерфейсы</small></b></code>

  Максимальное время жизни самой продолжительной активной сессии или транзакции (в миллисекундах). Применяется только для сессий в статусах `active` и `idle in transaction`.
  
  Чтобы настройка не влияла на производительность кластера, периодически проверяется самая длинная транзакция/сессия. Время между проверками выбирается случайным образом в интервале от 5 до 10 минут. Например, если задать значение настройки `1000`, то сессия завершится в течение 1 секунды + 5–10 минут.
  
  Если задано значение больше чем значение по умолчанию, это может привести к увеличению размера БД и замедлению работы операционной системы.

  Минимальное значение — `0` (нет ограничений на время жизни активной сессии/транзакции), максимальное значение — `2147483647`. Минимальная гранулярность изменения настройки — `1000`.

  Подробнее о возможных статусах сессии в [документации PostgreSQL](https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-ACTIVITY-VIEW).

- **Shared buffers**{#setting-shared-buffers} <code><b><small>Все интерфейсы</small></b></code>

  Объем памяти (в байтах), который PostgreSQL может использовать для буферов в разделяемой памяти (shared memory).

  Минимальное значение — `131072` (128 КБ), максимальное значение [зависит от выбранного класса хостов](#settings-instance-dependent) и равно 80% от общего размера RAM хоста кластера Managed Service for PostgreSQL. По умолчанию установлено значение 25% от общего размера RAM, но не более 8 ГБ.

  Подробнее в описании настройки `shared_buffers` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-SHARED-BUFFERS).

- **Shared preload libraries**{#setting-shared-libraries} <code><b><small>Все интерфейсы</small></b></code>

  Разделенные запятыми имена библиотек общего пользования (shared libraries), которые будут загружаться при запуске сервера PostgreSQL. Библиотеки требуются для работы некоторых [расширений PostgreSQL](../operations/extensions/cluster-extensions.md).

  Подробнее в описании настройки `shared_preload_libraries` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-SHARED-PRELOAD-LIBRARIES).

- **Standard conforming strings**{#setting-standard-strings} <code><b><small>Все интерфейсы</small></b></code>

  Включает прочтение символа `\` в обычных строковых константах (`'...'`) не как спецсимвола, а как обычного символа согласно стандарту SQL.

  По умолчанию настройка включена.

  Подробнее в описании настройки `standard_conforming_strings` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-compatible.html#GUC-STANDARD-CONFORMING-STRINGS).

- **Statement timeout**{#setting-statement-timeout} <code><b><small>Все интерфейсы</small></b></code>

  Максимальная длительность (в миллисекундах) выполнения команды, при превышении которой команда прерывается.

  Минимальное значение — `0`, максимальное значение — `2147483647`, по умолчанию — `0`.

  Подробнее в описании настройки `statement_timeout` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-STATEMENT-TIMEOUT).

- **Synchronize seqscans**{#setting-synchronize-seqscans} <code><b><small>Все интерфейсы</small></b></code>

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

  По умолчанию настройка включена.

  Подробнее в описании настройки `synchronize_seqscans` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-compatible.html#GUC-SYNCHRONIZE-SEQSCANS).

- **Synchronous commit**{#setting-synchronous-commit} <code><b><small>Все интерфейсы</small></b></code>

  Определяет, после какого этапа обработки [WAL](https://www.postgresql.org/docs/current/wal-intro.html) сервер посчитает транзакцию завершенной.

  Допустимые значения:

  {% list tabs group=instructions %}

  - Консоль управления/CLI {#console}

    - `on` — транзакция подтверждается, если WAL записан на диск мастера и на диск каждой кворумной реплики.
    - `off` — транзакция подтверждается, даже если данные еще не попали в WAL. Запись несинхронна, данные о транзакции могут быть потеряны в результате сбоя дисковой подсистемы.
    - `local` — транзакция подтверждается, если WAL записан на диск мастера.
    - `remote_write`— транзакция подтверждается, если WAL записан на диск мастера, все кворумные реплики приняли WAL и передали его операционной системе для записи на диск. В случае потери дисковой системы мастера и сбоя операционной системы на кворумных репликах данные транзакции с таким уровнем синхронизации могут быть утеряны.
    - `remote_apply` — транзакция подтверждается, если WAL записан на диск мастера, все кворумные реплики приняли WAL и применили изменения из него.

    Значение по умолчанию — `on`.

  - Terraform {#tf}

    - `1` или `"SYNCHRONOUS_COMMIT_ON"` — транзакция подтверждается, если WAL записан на диск мастера и на диск каждой кворумной реплики.
    - `2` или `"SYNCHRONOUS_COMMIT_OFF"` — транзакция подтверждается, даже если данные еще не попали в WAL. Запись несинхронна, данные о транзакции могут быть потеряны в результате сбоя дисковой подсистемы.
    - `3` или `"SYNCHRONOUS_COMMIT_LOCAL"` — транзакция подтверждается, если WAL записан на диск мастера.
    - `4` или `"SYNCHRONOUS_COMMIT_REMOTE_WRITE"` — транзакция подтверждается, если WAL записан на диск мастера, все кворумные реплики приняли WAL и передали его операционной системе для записи на диск. В случае потери дисковой системы мастера и сбоя операционной системы на кворумных репликах данные транзакции с таким уровнем синхронизации могут быть утеряны.
    - `5` или `"SYNCHRONOUS_COMMIT_REMOTE_APPLY"` — транзакция подтверждается, если WAL записан на диск мастера, кворумные реплики приняли WAL и применили изменения из него.

    Значение по умолчанию — `"SYNCHRONOUS_COMMIT_ON"`.

  - API {#api}

    - `SYNCHRONOUS_COMMIT_ON` — транзакция подтверждается, если WAL записан на диск мастера и на диск каждой кворумной реплики.
    - `SYNCHRONOUS_COMMIT_OFF` — транзакция подтверждается, даже если данные еще не попали в WAL. Запись несинхронна, данные о транзакции могут быть потеряны в результате сбоя дисковой подсистемы.
    - `SYNCHRONOUS_COMMIT_LOCAL` — транзакция подтверждается, если WAL записан на диск мастера.
    - `SYNCHRONOUS_COMMIT_REMOTE_WRITE` — транзакция подтверждается, если WAL записан на диск мастера, все кворумные реплики приняли WAL и передали его операционной системе для записи на диск. В случае потери дисковой системы мастера и сбоя операционной системы на кворумных репликах данные транзакции с таким уровнем синхронизации могут быть утеряны.
    - `SYNCHRONOUS_COMMIT_REMOTE_APPLY` — транзакция подтверждается, если WAL записан на диск мастера, все кворумные реплики приняли WAL и применили изменения из него.

    Значение по умолчанию — `SYNCHRONOUS_COMMIT_ON`.

  {% endlist %}

  Подробнее в описании настройки `synchronous_commit` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-SYNCHRONOUS-COMMIT).

  Настройка действует на уровне кластера Managed Service for PostgreSQL, но ее можно [переопределить на уровне пользователя](settings-list.md#dbms-user-settings).

- **Temp buffers**{#setting-temp-buffers} <code><b><small>Все интерфейсы</small></b></code>

  Максимальный объем памяти (в байтах), выделяемой для временных буферов в каждой сессии.

  Минимальное значение — `100`, максимальное значение — `1073741823` (1 ГБ), по умолчанию — `8388608` (8 МБ).

  Подробнее в описании настройки `temp_buffers` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-TEMP-BUFFERS).

- **Temp file limit**{#setting-temp-file-limit} <code><b><small>Все интерфейсы</small></b></code>

  Максимальный объем дискового пространства (в байтах), который один процесс сможет использовать для временных файлов. Транзакция, которая попытается превысить этот предел, будет отменена.

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

  Минимальное значение — `-1` (нет ограничений), максимальное значение — `2147483647` (2 ГБ), по умолчанию — `-1`.

  Подробнее в описании настройки `temp_file_limit` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-TEMP-FILE-LIMIT).

  Настройка действует на уровне кластера Managed Service for PostgreSQL, но ее можно [переопределить на уровне пользователя](settings-list.md#dbms-user-settings).

- **Timezone**{#setting-timezone} <code><b><small>Все интерфейсы</small></b></code>

  Часовой пояс для вывода и ввода значений времени.

  Значение по умолчанию — `Europe/Moscow`.

  Подробнее в описании настройки `timezone` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-TIMEZONE).

- **Track activity query size**{#setting-track-activity-query-size} <code><b><small>Все интерфейсы</small></b></code>

  Объем памяти (в байтах), резервируемой в каждой активной сессии для хранения текста выполняемой в данной момент команды.

  Минимальное значение — `100`, максимальное значение — `102400`, по умолчанию — `1024`.

  Подробнее в описании настройки `track_activity_query_size` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-statistics.html#GUC-TRACK-ACTIVITY-QUERY-SIZE).

- **Track commit timestamp**{#setting-track-commit-timestamp} <code><b><small>Все интерфейсы</small></b></code>

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

  По умолчанию настройка выключена.

  Подробнее в описании настройки `track_commit_timestamp` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-replication.html#GUC-TRACK-COMMIT-TIMESTAMP).

- **Transform null equals**{#setting-transform-null-equals} <code><b><small>Все интерфейсы</small></b></code>

  Включает интерпретацию условия `выражение = NULL` как `выражение IS NULL`. Условие истинно, если выражение имеет значение `NULL`, и ложно в противном случае. Согласно стандарту SQL, сравнение `выражение = NULL` всегда возвращает `NULL` (неизвестное значение).

  По умолчанию настройка выключена (действует стандарт SQL).

  Подробнее в описании настройки `transform_null_equals` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-compatible.html#GUC-TRANSFORM-NULL-EQUALS).

- **Vacuum cleanup index scale factor**{#setting-vacuum-index-scale-factor} <code><b><small>Все интерфейсы</small></b></code>

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

  Минимальное значение — `0.0`, максимальное значение — `10000000000.0`, по умолчанию — `0.1`.

  Функциональность не поддерживается в PostgreSQL начиная с версии `14`.

  Подробнее в описании настройки `vacuum_cleanup_index_scale_factor` в [документации PostgreSQL](https://www.postgresql.org/docs/12/runtime-config-client.html#GUC-VACUUM-CLEANUP-INDEX-SCALE-FACTOR).

- **Vacuum cost delay**{#setting-vacuum-cost-delay} <code><b><small>Все интерфейсы</small></b></code>

  Время (в миллисекундах), в течение которого будет простаивать процесс выполнения команд `VACUUM` и `ANALYZE`, превысивший предел стоимости (описан в настройке [Vacuum cost limit](#setting-vacuum-cost-limit)).

  Минимальное значение — `0`, максимальное значение — `100`, по умолчанию — `0`.

  Подробнее в описании настройки `vacuum_cost_delay` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#RUNTIME-CONFIG-RESOURCE-VACUUM-COST).

- **Vacuum cost limit**{#setting-vacuum-cost-limit} <code><b><small>Все интерфейсы</small></b></code>

  Предел стоимости, при накоплении которой процесс очистки `VACUUM` будет приостанавливаться (переходить в спящий режим).

  Минимальное значение — `1`, максимальное значение — `10000`, по умолчанию — `200`.

  Подробнее в описании настройки `vacuum_cost_limit` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-VACUUM-COST-LIMIT).

- **Vacuum cost page dirty**{#setting-vacuum-cost-page-dirty} <code><b><small>Все интерфейсы</small></b></code>

  Условная стоимость такой операции очистки `VACUUM`, при которой изменяется блок, не модифицированный ранее.

  Минимальное значение — `0`, максимальное значение — `10000`, по умолчанию — `20`.

  Подробнее в описании настройки `vacuum_cost_page_dirty` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-VACUUM-COST-PAGE-DIRTY).

- **Vacuum cost page hit**{#setting-vacuum-cost-page-hit} <code><b><small>Все интерфейсы</small></b></code>

  Условная стоимость очистки буфера, оказавшегося в общем кеше.

  Минимальное значение — `0`, максимальное значение — `10000`, по умолчанию — `1`.

  Подробнее в описании настройки `vacuum_cost_page_hit` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-VACUUM-COST-PAGE-HIT).

- **Vacuum cost page miss**{#setting-vacuum-cost-page-miss} <code><b><small>Все интерфейсы</small></b></code>

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

  Минимальное значение — `0`, максимальное значение — `10000`, по умолчанию — `10`.

  Подробнее в описании настройки `vacuum_cost_page_miss` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-VACUUM-COST-PAGE-MISS).

- **Vacuum failsafe age**{#setting-vacuum-failsafe-age} <code><b><small>Все интерфейсы</small></b></code>

  Максимальный возраст «замороженной» (уже завершенной) транзакции, измеряемый в количестве транзакций, запущенных после нее. По достижении этого показателя запускается очистка процессом `VACUUM`, чтобы избежать переполнения счетчика транзакций.

  Минимальное значение — `0`, максимальное значение — `2100000000`, по умолчанию — `1600000000`.

  Функциональность поддерживается в PostgreSQL начиная с версии 14.

  Подробнее в описании настройки `vacuum_failsafe_age` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-VACUUM-FAILSAFE-AGE).

- **Vacuum multixact failsafe age**{#setting-vacuum-multixact-failsafe-age} <code><b><small>Все интерфейсы</small></b></code>

  Максимальный возраст «замороженной» (уже завершенной) [мультитранзакции](https://www.postgresql.org/docs/14/routine-vacuuming.html#VACUUM-FOR-MULTIXACT-WRAPAROUND), измеряемый в количестве мультитранзакций, запущенных после нее. По достижении этого показателя запускается очистка процессом `VACUUM`, чтобы избежать переполнения счетчика мультитранзакций.

  Минимальное значение — `0`, максимальное значение — `2100000000`, по умолчанию — `1600000000`.

  Функциональность поддерживается в PostgreSQL начиная с версии 14.

  Подробнее в описании настройки `vacuum_multixact_failsafe_age` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-VACUUM-MULTIXACT-FAILSAFE-AGE).

- **Wal keep size**{#setting-wal-keep-size} <code><b><small>Все интерфейсы</small></b></code>

  Минимальный размер устаревших сегментов лога (в байтах), сохраняемых в папке [WAL](https://www.postgresql.org/docs/current/wal-intro.html), чтобы при необходимости [реплики](replication.md#replication) могли их загрузить.

  Минимальное значение — `0` (прошлые фрагменты не сохраняются для репликации), максимальное значение — `2251799812636672` (2 ТБ), по умолчанию — `0`.

  Функциональность поддерживается в PostgreSQL начиная с версии 13.

  Подробнее в описании настройки `wal_keep_size` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-replication.html#GUC-WAL-KEEP-SIZE).

- **Wal level**{#setting-wal-level} <code><b><small>Все интерфейсы</small></b></code>

  Настройка определяет объем информации, которая записывается в журнал Write-Ahead Log (WAL). Возможные значения (по возрастанию детализации):

  - `REPLICA` — уровень по умолчанию, который обеспечивает поддержку архивирования WAL и репликации, включая запросы только на чтение на репликах. Подходит для настройки потоковой репликации и непрерывной архивации журнала WAL.
  - `LOGICAL` — самый детальный уровень. Включает всю информацию с уровня `REPLICA`, а также данные, необходимые для логического декодирования и репликации. Необходим, например, для логической репликации баз данных. Это значение настройки приводит к значительному увеличению объема WAL, особенно в случае таблиц с `REPLICA IDENTITY FULL` и при выполнении множества команд `UPDATE` и `DELETE`.

  Подробнее в описании настройки `wal_level` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-WAL-LEVEL).

- **Work mem**{#setting-work-mem} <code><b><small>Все интерфейсы</small></b></code>

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

  Минимальное значение — `64`, максимальное значение — `2147483647` (2 ГБ), по умолчанию — `4194304` (4 МБ).

  Подробнее в описании настройки `work_mem` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-WORK-MEM).

- **Xmlbinary**{#setting-xmlbinary} <code><b><small>Все интерфейсы</small></b></code>

  Способ кодирования двоичных данных в XML. Возможные значения:

  - `base64` (`XML_BINARY_BASE64` для Terraform, API и CLI) — BASE64-кодирование;
  - `hex` (`XML_BINARY_HEX` для Terraform, API и CLI) — шестнадцатеричное кодирование.

  Значение по умолчанию — `base64`.

  Подробнее в описании настройки `xmlbinary` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-XMLBINARY).

- **Xmloption**{#setting-xmloption} <code><b><small>Все интерфейсы</small></b></code>

  Тип преобразования XML-данных в символьные по умолчанию. Возможные значения:

  - `document` (`XML_OPTION_DOCUMENT` для Terraform, API и CLI) — XML-документ;
  - `content` (`XML_OPTION_CONTENT` для Terraform, API и CLI) — фрагмент XML-документа.

  Значение по умолчанию — `content`.

  Подробнее в описании настройки `xmloption` в [документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-XMLOPTION).

## Настройки на уровне пользователя {#dbms-user-settings}

Эти настройки влияют на поведение PostgreSQL при работе с запросами пользователя:

- **Catchup timeout**{#setting-catchup-timeout} <code><b><small>Консоль управления</small></b></code> <code><b><small>API</small></b></code> <code><b><small>Terraform</small></b></code>

    Максимально допустимое время отставания реплики от мастера (в секундах).

    Если задано ненулевое значение настройки, то [менеджер подключений Odyssey](pooling.md) не разрешит подключиться к репликам, которые сильно отстают от мастера. Этот механизм позволяет защититься от чтения устаревших данных с таких реплик.

    Odyssey периодически запрашивает у кластера информацию об отставании реплик. При попытке подключения к реплике, которая отстает от мастера на большее время, чем указано в настройке, подключение будет прервано. Odyssey вернет сообщение вида:

    ```text
    remote server read/write error: failed to wait replica for catchup
    ```

    Минимальное значение и значение по умолчанию — `0` (можно подключиться к любым репликам вне зависимости от того, насколько они отстают от мастера).

- **Conn limit**{#setting-conn-limit} <code><b><small>Все интерфейсы</small></b></code>

  В транзакционном пулинге (transaction pooling) настройка ограничивает количество одновременных активных соединений для пользователя. При использовании этого типа пулинга пользователь может открыть тысячи соединений, но одновременно работать смогут только `N` соединений, где `N` — значение настройки.

  В сессионном пулинге (session pooling) настройка ограничивает количество соединений пользователя с каждым хостом в кластере PostgreSQL. При использовании этого типа пулинга значение настройки должно быть не меньше суммы всех соединений, которые могут быть открыты бэкендами пользовательского сервиса. Каждое открытое серверное соединение немного замедляет работу PostgreSQL на [OLTP](../../glossary/oltp.md)-нагрузке.

  Для сессионного пулинга применяются следующие принципы:

  - При добавлении пользователя Managed Service for PostgreSQL по умолчанию резервирует для него 50 подключений к каждому хосту в кластере PostgreSQL. Минимальное количество подключений на пользователя — 1.
  - Суммарное количество подключений, зарезервированных для пользователей, не должно превышать значение параметра [Max connections](settings-list.md#setting-max-connections). Managed Service for PostgreSQL резервирует 15 служебных подключений на каждом хосте.

    Например, если для кластера задана настройка `"max_connections": 100`, то вы можете зарезервировать не больше 85 подключений для пользователей на каждый хост кластера.

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

  Эта настройка [зависит от выбранного класса хостов](#settings-instance-dependent).

- **Default transaction isolation**{#setting-user-default-transaction-isolation} <code><b><small>Все интерфейсы</small></b></code>

  Описание настройки уровня кластера [Default transaction isolation](#setting-default-transaction-isolation).

- **Grants**{#setting-user-grants} <code><b><small>Все интерфейсы</small></b></code>

  Набор [ролей](roles.md), выданных пользователю.

- **Idle in transaction session timeout**{#setting-user-idle-transaction-timeout} <code><b><small>Все интерфейсы</small></b></code>

  Описание настройки уровня кластера [Idle in transaction session timeout](#setting-idle-transaction-timeout).

- **Idle session timeout**{#setting-user-idle-session-timeout} <code><b><small>Консоль управления</small></b></code> <code><b><small>API</small></b></code> <code><b><small>Terraform</small></b></code>

  Описание настройки уровня кластера [Idle session timeout](#setting-idle-session-timeout).

- **Lock timeout**{#setting-user-lock-timeout} <code><b><small>Все интерфейсы</small></b></code>

  Описание настройки уровня кластера [Lock timeout](#setting-lock-timeout).

- **Log min duration statement**{#setting-user-log-min-duration-statement} <code><b><small>Все интерфейсы</small></b></code>

  Описание настройки уровня кластера [Log min duration statement](#setting-log-min-duration-statement).

  Рекомендуется определить для каждого сервиса и соответствующего ему пользователя, что считается медленным выполнением запроса, и логировать только такие запросы. Например, для веб-сервиса медленным может считаться запрос, выполняющийся более одной секунды, а для сервиса построения отчетов — запрос, выполняющийся более 10 минут.

  Подробнее [в документации PostgreSQL](https://www.postgresql.org/docs/current/runtime-config-logging.html).

- **Log statement**{#setting-user-log-statement} <code><b><small>Все интерфейсы</small></b></code>

  Описание настройки уровня кластера [Log statement](#setting-log-statement).

- **Login**{#setting-user-login} <code><b><small>Консоль управления</small></b></code> <code><b><small>API</small></b></code> <code><b><small>Terraform</small></b></code>

  Определяет, может ли пользователь подключаться к кластеру PostgreSQL.

  Значение по умолчанию — `true` (пользователь может подключаться к кластеру).

- **Pg audit log**{#setting-pg-audit-log} <code><b><small>Все интерфейсы</small></b></code>

  Определяет, какие запросы пользователя попадут в лог для аудита.

  Настройка имеет силу только если:

  * к кластеру [подключена библиотека](../operations/extensions/cluster-extensions.md#libraries-connection) `pgaudit`;
  * к базе данных [подключено расширение](../operations/extensions/cluster-extensions.md#update-extensions) `pgaudit`.

  Возможные значения:

  {% list tabs group=instructions %}

  - Консоль управления/CLI {#console}

    - `read` — в лог попадут запросы `SELECT` и `COPY`, когда источником данных выступает отношение или запрос.
    - `write` — в лог попадут запросы `INSERT`, `UPDATE`, `DELETE`, `TRUNCATE` и `COPY`, когда приемником данных выступает отношение.
    - `function` — в лог попадут вызовы функций и блоки `DO`.
    - `role` — в лог попадут выражения, связанные с управлением ролями и привилегиями: `GRANT`, `REVOKE`, `CREATE/ALTER/DROP ROLE`.
    - `ddl` — в лог попадут все `DDL`, которые не входят в класс `ROLE`.
    - `misc` — в лог попадут вспомогательные команды: `DISCARD`, `FETCH`, `CHECKPOINT`, `VACUUM`, `SET`.
    - `misc_set` — в лог попадут вспомогательные команды `SET`, например, `SET ROLE`.

  - Terraform {#tf}

    - `READ` — в лог попадут запросы `SELECT` и `COPY`, когда источником данных выступает отношение или запрос.
    - `WRITE` — в лог попадут запросы `INSERT`, `UPDATE`, `DELETE`, `TRUNCATE` и `COPY`, когда приемником данных выступает отношение.
    - `FUNCTION` — в лог попадут вызовы функций и блоки `DO`.
    - `ROLE` — в лог попадут выражения, связанные с управлением ролями и привилегиями: `GRANT`, `REVOKE`, `CREATE/ALTER/DROP ROLE`.
    - `DDL` — в лог попадут все `DDL`, которые не входят в класс `ROLE`.
    - `MISC` — в лог попадут вспомогательные команды: `DISCARD`, `FETCH`, `CHECKPOINT`, `VACUUM`, `SET`.
    - `MISC_SET` — в лог попадут вспомогательные команды `SET`, например, `SET ROLE`.

  - API {#api}

    - `PG_AUDIT_SETTINGS_LOG_READ` — в лог попадут запросы `SELECT` и `COPY`, когда источником данных выступает отношение или запрос.
    - `PG_AUDIT_SETTINGS_LOG_WRITE` — в лог попадут запросы `INSERT`, `UPDATE`, `DELETE`, `TRUNCATE` и `COPY`, когда приемником данных выступает отношение.
    - `PG_AUDIT_SETTINGS_LOG_FUNCTION` — в лог попадут вызовы функций и блоки `DO`.
    - `PG_AUDIT_SETTINGS_LOG_ROLE` — в лог попадут выражения, связанные с управлением ролями и привилегиями: `GRANT`, `REVOKE`, `CREATE/ALTER/DROP ROLE`.
    - `PG_AUDIT_SETTINGS_LOG_DDL` — в лог попадут все `DDL`, которые не входят в класс `ROLE`.
    - `PG_AUDIT_SETTINGS_LOG_MISC` — в лог попадут вспомогательные команды: `DISCARD`, `FETCH`, `CHECKPOINT`, `VACUUM`, `SET`.
    - `PG_AUDIT_SETTINGS_LOG_MISC_SET` — в лог попадут вспомогательные команды `SET`, например, `SET ROLE`.

  {% endlist %}

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

  Подробнее о настройке логов для аудита читайте в разделе [Использование pgaudit](../operations/extensions/pgaudit.md).

- **Pool mode**{#setting-pool-mode} <code><b><small>Консоль управления</small></b></code> <code><b><small>API</small></b></code> <code><b><small>Terraform</small></b></code>

    [Режим управления соединениями](pooling.md), который использует менеджер соединений Odyssey.

    Возможные значения:

    * `SESSION` — сессионный режим.
    * `TRANSACTION` — транзакционный режим.
    * `STATEMENT` — режим запроса.

    
    Значение по умолчанию — `SESSION`.


- **Prepared statements pooling**{#setting-prepared-statements-pooling} <code><b><small>Консоль управления</small></b></code> <code><b><small>API</small></b></code> <code><b><small>Terraform</small></b></code>

  Позволяет использовать подготовленные операторы ([prepared statements](https://www.postgresql.org/docs/current/sql-prepare.html)) для транзакционного режима [менеджера соединений](pooling.md).

  Настройка доступна только для значения **Pool mode** `TRANSACTION`.

- **Statement timeout**{#setting-user-statement-timeout} <code><b><small>Все интерфейсы</small></b></code>

  Описание настройки уровня кластера [Statement timeout](#setting-statement-timeout).

- **Synchronous commit**{#setting-user-synchronous-commit} <code><b><small>Все интерфейсы</small></b></code>

  Описание настройки уровня кластера [Synchronous commit](#setting-synchronous-commit).

- **Temp file limit**{#setting-temp-file-limit} <code><b><small>Все интерфейсы</small></b></code>

  Описание настройки уровня кластера [Temp file limit](#setting-temp-file-limit).

- **Wal sender timeout**{#setting-wal-sender-timeout} <code><b><small>Все интерфейсы</small></b></code>

  Время (в миллисекундах), по истечении которого прерываются неактивные соединения репликации.

  Функциональность поддерживается в PostgreSQL начиная с версии 12.