Spec-Zone.ru › RethinkDB java

Понимание требований RethinkDB к памяти

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

Существует три основных источника использования памяти в RethinkDB:

  1. Выполнение запросов и фоновых процессов, таких как заполнение данных между узлами в кластере.
  2. Кэш страниц.
  3. Внутренние метаданные, пропорциональные размеру базы данных.

В случае с первым источником каждый процесс базы данных использует память для хранения промежуточных результатов и поддержания внутреннего состояния. Используемая память значительно варьируется в зависимости от типа выполняемых запросов и размера документов, хранящихся в базе данных. В качестве приблизительной оценки, ожидайте, что каждый запрос и фоновый процесс будут использовать 1–20 МБ памяти.

Мы подробно рассмотрим два других источника.

Размер кэша

Кэш страниц RethinkDB хранит недавно используемые данные в памяти, чтобы свести к минимуму доступ к диску. По умолчанию RethinkDB автоматически настраивает предел размера кэша в соответствии со формулой (available_mem - 1024 MB) / 2. available_mem — это объем доступной памяти в момент запуска RethinkDB, включая память, которая может быть освобождена операционной системой при необходимости (например, кэш диска операционной системы). Если доступно менее 1224 МБ памяти в системе, используется минимальный предел размера кэша 100 МБ. Вы можете найти фактический предел размера, используемый экземпляром RethinkDB, в его журнале.

Finding cache size

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

В зависимости от способа запуска процесса сервера RethinkDB, существуют два способа установки размера кэша.

  • При запуске RethinkDB из командной строки предел размера кэша устанавливается с помощью аргумента --cache-size <limit in MB>:

    $ rethinkdb --cache-size 2048

  • Если вы используете конфигурационные файлы для настройки RethinkDB (например, /etc/rethinkdb/instances.d/...), добавьте cache-size=<limit in MB> в конфигурационный файл, чтобы установить предел размера вручную.

Внутренние метаданные

RethinkDB может обрабатывать базы данных намного большего размера, чем объем оперативной памяти на сервере. Однако для обеспечения быстрых времен доступа всегда сохраняется некоторая внутренняя информация. Каждый таблице на сервере требуется 8 МБ накладных расходов.

RethinkDB организует данные в блоки. Размеры блоков в RethinkDB варьируются от 512 байт до максимального значения 4 КБ. Хотя содержимое самого блока может быть удалено из оперативной памяти, чтобы освободить место, метаданные размером примерно от 10 до 26 байт на каждый блок всегда сохраняются в памяти. Таким образом, эта накладная стоимость памяти напрямую пропорциональна количеству блоков, необходимых для данного набора данных. (Это помимо 8 МБ накладных расходов, упомянутых выше.)

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

  • Небольшие документы размером не более 250 байт (включая накладные расходы на кодирование) хранятся «в строке» в дереве первичного индекса. Много таких документов могут совместно использовать один блок размером 4 КБ.
  • Документы большего размера, чем 250 байт, хранятся в собственных блоках. Документы до 4 КБ используют один блок; более крупные документы разбиваются на несколько блоков по мере необходимости.

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

© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/docs/memory-usage/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API