# Параметры конфигурации СУБД

<!-- Описание соответствует версии Picodata `25.2.0-1504-ga77a09131` -->

В данном разделе перечислены параметры конфигурации СУБД, которые можно
изменить с помощью команды [ALTER SYSTEM]. Параметры делятся на две
группы:

- глобальные параметры всего кластера
- параметры, применяемые к отдельным [тирам]

[ALTER SYSTEM]: ../reference/sql/alter_system.md
[тирам]: ../overview/glossary.md#tier

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

## Глобальные параметры {: #global_params }

### auth_login_attempt_max

Максимальное количество неуспешных попыток аутентификации через `picodata
connect`. Каждая неуспешная попытка аутентификации увеличивает счетчик
неуспешных попыток соответствующего пользователя. Когда счетчик достигает
значения данного параметра, пользователь [блокируется], и любые последующие
попытки его аутентификации отклоняются. Счетчик сбрасывается при успешной
аутентификации или при разблокировке пользователя.

[блокируется]: ../admin/access_control.md#block_user

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

### auth_password_enforce_digits

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

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

### auth_password_enforce_lowercase

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

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

### auth_password_enforce_specialchars

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

Спецсимволы: `&`, `|`, `?`, `!`, `$`, `@`

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

### auth_password_enforce_uppercase

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

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

### auth_password_length_min

Минимальная длина пароля, требуемая при установке или изменении пароля
пользователя в Picodata.

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

### governor_auto_offline_timeout

Время в секундах, после которого инстанс, не отвечающий на запросы от
raft-лидера, будет автоматически переведен в состояние `Offline`.

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

### governor_check_replication_error

Режим проверки неполадок в системе репликации.

Во время изменения топологии кластера губернатор следит за синхронизацией
инстансов в репликасете и проверяет состояние подсистемы репликации.
Если этот параметр включён, то губернатор при обнаружении неполадки в системе
репликации на одном из инстансов автоматически переведёт такой инстанс в
состояние `Offline`.

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

### governor_common_rpc_timeout

Время ожидания до перехода губернатора к новой итерации цикла, за которое
инстансы должны ответить губернатору на его RPC-запросы.

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

### governor_plugin_rpc_timeout

Время ожидания до перехода губернатора к новой итерации цикла, за которое
инстансы должны ответить губернатору на его RPC-запросы для настройки
системы плагинов.

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

### governor_raft_op_timeout

Время ожидания до перехода губернатора к новой итерации цикла, за которое
предложенные губернатором изменения в raft-журнал должны быть применены к
локальной raft-машине.

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

### governor_rpc_batch_size

Размер группы RPC-запросов. При выполнении функции [`proc_sharding`]
губернатор рассылает RPC-запросы, объединяя их в группы настраиваемого размера.
Данный подход позволяет упорядочить опрос инстансов на стороне губернатора, а
такеж регулировать потребление сетевых и вычислительных ресурсов.

[`proc_sharding`]: ../architecture/rpc_api.md#proc_sharding

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

### pg_portal_max

При исполнении SQL-запросов через протокол PostgreSQL действует
ограничение на максимальное количество порталов (`pg_portals_max`) и
планов исполнения ([`pg_statement_max`](#pg_statement_max)). Каждый план
запроса порождает 1 или более порталов. Если значение
`pg_statement_max` превышает `pg_portal_max`, то на узле Picodata можно
подготовить больше запросов, чем выполнить одновременно. Отказ
выполнения запросов в кластере под нагрузкой может быть связан с
недостаточными значениями этих параметров.

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

### pg_statement_max

При исполнении SQL-запросов через протокол PostgreSQL действует
ограничение на максимальное количество планов исполнения (prepared
statement — единица исполнения одного запроса после его разбора парсером
SQL). Данный параметр устанавливает лимит на создание таких планов.
Ограничения порталов и планов исполнения являются глобальными: все
подключенные к узлу клиенты делят эти лимиты.  Например, при
`pg_statemets_max` = 1000, 200 клиентов смогут одновременно иметь не
более 5 планов. При этом распределение не является равномерным: один
клиент может заполнить все хранилище и лишить возможности создавать
планы других клиентов.

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

### plugin_check_migration_hash

Проверка изменения контрольных сумм у файлов миграций плагинов.

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

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

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

### raft_snapshot_chunk_size_max

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

Значение по умолчанию: `16777216` (16 МБ)

### raft_snapshot_read_view_close_timeout

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

Значение по умолчанию: `86400` (24 часа)

### raft_wal_count_max

Максимальное количество записей в raft-журнале, при превышении которого
он будет автоматически [компактизирован]. Raft-журнал хранится в
оперативной памяти (ОЗУ) узла, на котором запущен инстанс. Слишком
высокое значение `raft_wal_count_max` может привести к исчерпанию ОЗУ на узле
инстанса.

[компактизирован]: ../overview/glossary.md#raft_log_compaction

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

### raft_wal_size_max

Максимальный размер raft-журнала в байтах, при превышении которого он будет
автоматически [компактизирован]. Raft-журнал хранится в
оперативной памяти (ОЗУ) узла, на котором запущен инстанс. Слишком
высокое значение `raft_wal_size_max` может привести к исчерпанию ОЗУ на узле
инстанса.

Значение по умолчанию: `67108864` (64 МБ)

### sql_motion_row_max

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

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

См. также:

* [Параметры для ограничения запросов](sql/non_block.md#query_limitations)

### sql_storage_cache_count_max

Максимальное количество prepared statement-ов для размещения в LRU-кэше
на узлах хранения Vshard.

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

### sql_storage_cache_size_max

Динамический параметр Box API, регулирующий размер LRU-кэша в байтах.

Значение по умолчанию: `5242880` (~5 МБ)

### sql_vdbe_opcode_max

Максимальное количество команд при исполнении локального плана с помощью
[VDBE] на узле кластера.

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

### sql_preemption

Режим неблокирующего выполнения SQL-запросов. При включении длительно
выполняющиеся запросы передают управление планировщику, предотвращая
блокировку event loop.

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

### sql_preemption_interval_us

Интервал переключения в микросекундах при включенном режиме неблокирующего
выполнения SQL.

Значение по умолчанию: `500` (мкс)

### sql_preemption_opcode_max

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

Значение по умолчанию: 1024 (опкода)

## Параметры отдельных тиров {: #tier_params }

### iproto_net_msg_max
<!-- https://www.tarantool.io/en/doc/2.11/reference/configuration/#cfg-networking-net-msg-max -->

Максимальное количество сообщений, которое Picodata обрабатывает параллельно.

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

На мощных системах можно *увеличить* значение `iproto_net_msg_max`,
тогда планировщик немедленно начнет обрабатывать ожидающие запросы.

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

Когда количество сообщений достигает `iproto_net_msg_max`, Picodata
приостанавливает обработку входящих пакетов, пока не обработает предыдущие
сообщения. Это не прямое ограничение количества файберов, обрабатывающих
сетевые сообщения — скорее, это общесистемное ограничение пропускной
способности канала. В свою очередь, это приводит к ограничению количества
входящих сетевых сообщений, которые обрабатывает поток процессора транзакций,
и, как следствие, косвенно влияет на файберы, обрабатывающие сетевые сообщения.

<!-- The number of fibers is smaller than the number of messages because messages
can be released as soon as they are delivered, while incoming requests might
not be processed until some time after delivery. -->

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

### memtx_checkpoint_count
<!-- https://www.tarantool.io/en/doc/2.11/reference/configuration/#cfg-checkpoint-daemon-checkpoint-count -->

Максимальное количество снапшотов, хранящихся в директории *memtx_dir*.
Если после создания нового снапшота их общее количество превысит значение
этого параметра, старые снапшоты будут удалены. Если значение параметра
равно `0`, старые снапшоты останутся нетронутыми.

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

### memtx_checkpoint_interval
<!-- https://www.tarantool.io/en/doc/2.11/reference/configuration/#cfg-checkpoint-daemon-checkpoint-interval -->

Период активности службы создания снапшотов (checkpoint daemon) *в секундах*.
Если значение параметра больше нуля и произошло изменение в базе данных, служба
создания снапшотов периодически вызывает функцию, которая
создает новый снапшот. Если значение параметра равно `0.0`, служба создания
снапшотов отключается.

Значение по умолчанию: `3600.0` (1 час)

См. также:

* [Параметры для ограничения запросов](sql/non_block.md#query_limitations)

[VDBE]: https://www.sqlite.org/vdbe.html
