Системный неймспейс #config

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

Имя Тип данных Описание
profiling object Параметры профилирования. Поля объекта:
queriesperfstats — флаг, включающий запись статистики производительности запросов к базе данных в неймспейс #queriesperfstats.
queries_threshold_us — минимальное время выполнения запроса для его записи в неймспейс #queriesperfstats.
perfstats — флаг, включающий запись статистики производительности неймспейсов базы данных в неймспейс #perfstats.
memstats — флаг, включающий запись информации о потреблении памяти каждым неймспейсом базы данных в неймспейс #memstats.
activitystats — Флаг, включающий запись информации о текущих активностях пользователей базы данных в неймспейс #activitystats.
long_queries_logging — блок с настройками для логирования долгих запросов и транзакций. Состоит из трех секций - select, update_delete, transaction. В секциях select и update_delete определяются параметры threshold_us (минимальный порог, устанавливающий время выполнения запроса в микросекундах, при превышении которого происходит логирование данного запроса с уровнем Warning, при отрицательном значении параметра логирование отключено) и normalized (флаг, включающий логирование запросов в нормализованном виде). В секции transaction устанавливаются 2 параметра threshold_us и avg_step_threshold_us, устанавливающие пороги для логирования на выполнение транзакции целиком и на длительность одного шага в среднем соответственно. Также измеряются в микросекундах и при отрицательных значениях отключают соответствующие записи в лог.
namespaces array Массив объектов с параметрами неймспейсов базы данных. Поля объектов — элементов массива:
namespace — имя неймспейса, для которого применяются настройки. Если значение поля *, настройки применяются для всех неймспейсов базы данных.
log_level — уровень логирования запросов к неймспейсу. Возможные варианты в порядке возрастания количества логируемых событий: none, error, warning, info, trace.
lazyload — (deprecated-параметр) флаг, включающий режим lazy load для неймспейса (оно будет загружено с диска при первом вызове, а не при запуске Reindexer).
unload_idle_threshold — (deprecated-параметр) таймаут для выгрузки данных неймспейса из оперативной памяти. Если значение поля 0, данные выгружаться не будут.
join_cache_mode — режим join-кэша. Возможные значения: on, off, aggressive.
start_copy_policy_tx_size — включает копирование неймспейса для транзакции с числом шагов, превышающим заданное значение (при условии, что параметр copy_politics_multiplier также разрешает это). Значение по умолчанию — 10000.
copy_policy_multiplier — отключает копирование, если размер неймспейса больше, чем copy_policy_multiplier * start_copy_tx_size. Значение по умолчанию 5.
tx_size_to_always_copy — включает принудительное копирование неймспейсов для транзакций с количеством шагов больше указанного значения. Значение по умолчанию — 100000.
optimization_timeout_ms — таймаут перед началом фоновой оптимизации индексов после последнего обновления. При значении 0 оптимизация отключается.
optimization_sort_workers — Максимальное количество фоновых потоков оптимизации индексов. При значении 0 оптимизация сортировки отключается.
wal_size — максимальное количество записей в WAL неймспейса.
min_preselect_size — минимальный размер предварительной выборки для оптимизации запросов с INNER JOIN путем введения фильтров. Параметр применяется, если произведение MaxPreselectPart * ns.size (размер неймспейса) меньше установленного для него значения.
max_preselect_size — максимальный размер предварительной выборки для оптимизации запросов с INNER JOIN путем введения фильтров.
max_preselect_part — максимальная часть неймспейса для предварительной выборки записей из него для оптимизации запросов с INNER JOIN путем введения фильтров.
index_updates_counting_mode — флаг, включающий «режим подсчета» для отслеживания обновлений индекса вместо сохранения этих обновлений при модификации документов. Это увеличит время оптимизации индекса, однако может сократить время вставки.
strict_mode — уровень строгости проверки запроса при выполнении. Добавляет дополнительную проверку существования в целевом неймспейсе указанных в запросе полей (при значении names) или индексов (при значении indexes). Существование полей/индексов проверяется в условиях сортировки и фильтрации. Возможные значения: none, names (значение по умолчанию) или indexes.
sync_storage_flush_limit — количество обновлений в буфере памяти, при превышении которого все его содержимое принудительно отправляется в дисковый сторадж (в дополнение к записи в фоновом потоке). Если значение 0, очистка буфера и запись его содержимого в дисковый сторадж происходит только в фоновом потоке.
replication object Общие настройки репликации. Поля объекта:
cluster_id — id кластера, в состав которого входит сервер.
server_id — id сервера. Должен быть уникальным для каждого узла. Диапазон допустимых значений — от 0 до 999
async_replication object Специальные параметры для асинхронной репликации. Поля объекта:
role — роль экземпляра сервера в репликации. Возможные значения:
  none — репликация отключена,
  follower — сервер участвует в репликации как Follower,
  leader — сервер участвует в репликации как Leader.
sync_threads — количество потоков репликации.
syncs_per_thread — максимальное количество одновременных синхронизаций для каждого потока репликации.
online_updates_timeout_sec — время ожидания ответа от Follower для режима онлайн-репликации. Задается в секундах.
sync_timeout_sec — время на запись чанка из снэпшота. Если запись не произошла за это время, то соединение разрывается и происходит повторная синхронизация. Задается в секундах.
retry_sync_interval_msec — таймаут повторной попытки синхронизации при возникновении сетевых ошибок.
enable_compression — флаг для включения/отключения сжатия сетевого трафика.
batching_routines_count — количество корутин, одновременно занимающихся отправкой данных при онлайн-репликации для каждого Follower-а. Увеличение числа корутин снизит задержки, связанные с сетью, за счёт большей асинхронности, но увеличит потребление памяти.
max_wal_depth_on_force_sync — максимальное количество записей WAL, которые будут скопированы после запуска полной синхронизации. Увеличение значения этого параметра может помочь избежать force-sync синхронизации после переключения Leader, а также увеличивает расход оперативной памяти во время синхронизации.
namespaces — список неймспейсов для репликации. Если он пустой, будет выполняться репликация всех неймспейсов из базы данных. Все реплицируемые неймспейсы на Follower-ах будут иметь режим read-only.
nodes — список Follower-ов и их настройки:
   dsn — DSN ноды—Follower-а. Должен задаваться в cproto-формате. Содержит адрес и порт для доступа к Follower по протоколу RPC и имя БД Follower, в которую будут реплицироваться данные;
   namespaces — необязательный список неймспейсов для репликации на данную ноду-Follower. Если он не задан, будет использоваться значение из общей конфигурации репликации.
action object Команды для управления сервером Reindexer (подробнее — в разделе «Интерактивное управление репликацией»). Команды добавляются сюда с помощью UPSERT и сразу выполняются. Состав объекта:
command — команда для выполнения.
sharding object Настройки шардинга. В данный момент изменять эти настройки через неймспейс #config нельзя, они доступны только для чтения.
Поля объекта:
version — версия формата файла конфигурации.
namespaces — список (массив) неймспейсов для шардинга. Элементы массива:
  namespace — имя неймспейса,
  default_shard — id шарда по умолчанию. На нем будут храниться все записи со значениями ключа шардинга, которые не заданы в условиях для шардинга на другие шарды,
  index — индекс, по которому будет производиться распределение записей по шардам,
  keys — массив ключе шардинга. Включает элементы: shard_id — id шарда, на котором будут храниться записи с заданным значением ключа; values — значение ключа шардинга для распределения записей на шард с указанным выше id.
shards — массив со сведениями об узлах, участвующих в шардинге. Элементы массива:
  shard_id — id узла, dsns — адрес узла (или несколько адресов, если шардирование используется совместно с кластеризацией).
this_shard_id — id данного шарда.
reconnect_timeout_msec — таймаут для переподключения для одного узла (лимит времени для запроса статуса).
shards_awaiting_timeout_sec — время ожидания подключения шардов при выполнении распределённых операций (например, OpenNamespace или AddIndex). Параметр необходим, т.к. некоторые операции требуют, чтобы все шарды были онлайн и при этом они могут запускаться не одновременно. Значение 0 для этого параметра отключает механизм ожидания, -1 — устанавливает неограниченное время ожидания,proxy_conn_count — количество прокси-соединений между шардами. Диапазон возможных значений — от 1 до 64.
proxy_conn_concurrency — количество одновременных запросов для каждого прокси-соединения. Диапазон возможных значений — от 1 до 1024.
proxy_conn_threads — количество потоков для прокси-соединений.

Пример JSON-представления неймспейса:

{
  "items": [
    {
      "type": "profiling",
      "profiling": {
        "queriesperfstats": false,
        "queries_threshold_us": 10,
        "perfstats": false,
        "memstats": true,
        "activitystats": false,
        "long_queries_logging": {
          "select": {
            "threshold_us": 1000,
            "normalized": false
          },
          "update_delete": {
            "threshold_us": -1,
            "normalized": false
          },
          "transaction": {
            "threshold_us": 1000,
            "avg_step_threshold_us": 30
          }
        }
      }
    },
    {
      "type": "namespaces",
      "namespaces": [
        {
          "namespace": "*",
          "log_level": "none",
          "lazyload": false,
          "unload_idle_threshold": 0,
          "join_cache_mode": "off",
          "start_copy_policy_tx_size": 10000,
          "copy_policy_multiplier": 5,
          "tx_size_to_always_copy": 100000,
          "optimization_timeout_ms": 800,
          "optimization_sort_workers": 4,
          "wal_size": 4000000,
          "min_preselect_size": 1000,
          "max_preselect_size": 1000,
          "max_preselect_part": 0.1,
          "index_updates_counting_mode": false
        }
      ]
    },
    {
      "type": "replication",
      "replication": {
        "cluster_id": 2,
        "server_id": 0
      }
    },
    {
      "type": "async_replication",
      "async_replication": {
        "role": "none",
        "sync_threads": 4,
        "syncs_per_thread": 2,
        "online_updates_timeout_sec": 20,
        "sync_timeout_sec": 60,
        "retry_sync_interval_msec": 30000,
        "enable_compression": true,
        "batching_routines_count": 100,
        "force_sync_on_logic_error": false,
        "force_sync_on_wrong_data_hash": false,
        "max_wal_depth_on_force_sync": 1000,
        "namespaces": [],
        "nodes": []
      }
    },
    {
      "type": "action",
      "action": {
        "command": ""
      }
    },
    {
      "type": "sharding",
      "sharding": {
        "version": 1,
        "namespaces": [
          {
            "namespace": "ns",
            "default_shard": 0,
            "index": "location",
            "keys": [
              {
                "shard_id": 1,
                "values": [
                  "Europe",
                  "Asia"
                ]
              },
              {
                "shard_id": 2,
                "values": [
                  "North America"
                ]
              }
            ]
          },
          {
            "namespace": "ns1",
            "default_shard": 0,
            "index": "location",
            "keys": []
          }
        ],
        "shards": [
          {
            "shard_id": 0,
            "dsns": [
              "cproto://127.0.0.1:7110/sharding_db"
            ]
          },
          {
            "shard_id": 1,
            "dsns": [
              "cproto://127.0.0.1:7210/sharding_db"
            ]
          },
          {
            "shard_id": 2,
            "dsns": [
              "cproto://127.0.0.1:7310/sharding_db"
            ]
          }
        ],
        "this_shard_id": 0,
        "reconnect_timeout_msec": 3000,
        "shards_awaiting_timeout_sec": 30,
        "proxy_conn_count": 8,
        "proxy_conn_concurrency": 8,
        "proxy_conn_threads": 4
      }
    }
  ],
  "namespaces": [
    "#config"
  ],
  "cache_enabled": true
}