Распределение оперативной памяти

Количество оперативной памяти (параметр pool), выделяемой ядру СУБД, можно задать двумя способами:

  1. в командной строке при запуске ядра СУБД. Память под системные очереди будет выделяться индивидуально для данного сеанса запуска ядра СУБД;

  2. при создании БД (или модификации параметров функционирования БД) установить режим автоконфигурации системных очередей ядра СУБД. Память под системные очереди будет выделяться автоматически в зависимости от текущих размеров БД.

После старта ядра СУБД параметры распределения оперативной памяти изменению не подлежат.

Параметр pool задает размер пула памяти ядра СУБД в страницах по 4 Кбайт. В пуле размещаются все очереди ядра СУБД: очередь файлов, очередь таблиц, очередь столбцов, очередь страниц, очередь каналов и др.

Параметр spool задает размер пула памяти процесса сортировки в страницах. Размер страницы по умолчанию 4 Кбайт. Если предполагается сортировка записей большого размера, то для ускорения процесса сортировки необходимо увеличить размер страниц пула сортировки и перезапустить ядро СУБД. При невозможности разместить сортируемые данные в пул сортировки она будет выполняться с помощью файла сортировки (см. раздел Рабочие файлы).

Параметр ppool задает размер пула подсистемы фразового поиска СУБД в страницах по 4 Кбайт.

По умолчанию пул ядра содержит 5000 страниц, пул сортировки и фразового индекса 200 страниц.

Параметр pcontcache задает размер кэша в страницах по 4 Кбайт для контейнера, используемого при создании/модификации фразового индекса.

Параметр pbvcache задает размер кэша в страницах по 4 Кбайт для бит-вектора, используемого при создании/модификации фразового индекса.

Таким образом, при старте ядро СУБД ЛИНТЕР занимает оперативную память ОС в размере:

(pool+spool+ppool+pcontcache+pbvcache) * 4096 +
< размер кода + размер статических переменных >

байт.

При работе ядро СУБД не делает попыток получения дополнительной памяти.

Для максимального ускорения работы ядра СУБД требуется максимально возможное количество оперативной памяти. Эксперименты показали практически пропорциональную зависимость эффективности работы СУБД ЛИНТЕР от выделенной ей оперативной памяти. Однако в то же время необходимо, чтобы и операционная система располагала некоторым количеством свободной оперативной памяти. Если предполагается, что на данном компьютере, кроме ядра СУБД и его сетевого драйвера сервера, ничего функционировать не будет, то всю оставшуюся память можно предоставить ядру СУБД, увеличивая параметры pool, spool или ppool.

Рекомендуемое соотношение между параметрами pool и spool: 4 к 1. Но реально максимальная производительность ядра СУБД сильно зависит от требований к обработке данных, предъявляемых клиентскими приложениями. Например, если в БД хранятся большие объемы часто модифицируемых в разных таблицах данных, а сложных поисковых запросов к СУБД не поступает, то есть смысл увеличить размер пула ядра СУБД. И, наоборот, в случае частых сложных поисковых SQL-запросов с группировками и сортировками по нескольким столбцам результирующих выборок имеет смысл увеличить пул процесса сортировки.

В общем случае можно воспользоваться следующим алгоритмом настройки параметров памяти для ядра СУБД:

  • выделить максимально возможное количество виртуальной памяти с разделением ее между пулом ядра СУБД и пулом процесса сортировки в соотношении 2 к 1;

  • проанализировать реальный поток SQL-запросов к СУБД на обработку данных;

  • экспериментально подобрать наилучшее соотношение.