Влияние размеров очередей на производительность СУБД

Память, выделенная ядру СУБД, используется следующим образом:

  1. сначала в ней размещаются системные очереди;

  2. затем все очереди ядра СУБД;

  3. оставшееся место отводится под кэш ядра СУБД.

Примечание

При задании избыточных размеров очередей ядро СУБД не стартует.

Размер кэша может быть до 2 млрд. страниц. Если размер кэша недостаточен для запуска ядра СУБД, то оно не запустится.

Размер очередей (т.е. максимально возможное количество хранящихся в них элементов) устанавливается параметрами команды SET утилиты gendb (см. документ «Создание и конфигурирование базы данных»), например:

  • TABLES – размер очереди дескрипторов таблиц (по умолчанию 100);

  • COLUMNS – размер очереди дескрипторов столбцов (по умолчанию 500);

  • FILES – размер очереди файлов (по умолчанию 200);

  • USERS – размер очереди пользователей (по умолчанию 100);

  • CHANNELS – размер очереди каналов (по умолчанию 100).

В СУБД ЛИНТЕР только очередь каналов является статической, остальные очереди динамические.

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

Статическая очередь (т.е. очередь каналов) переполниться не может. Если СУБД настроена на работу с 5 каналами, то при попытке открыть 6-й канал клиентскому приложению, пославшему команду на открытие канала, будет возвращен соответствующий код завершения.

Размер любой очереди вычисляется как

< длина очереди > * < размер элемента очереди >

Размер элементов разных очередей колеблется в среднем от 50 до 1500 байт. Для поиска страниц в пуле ядра СУБД ЛИНТЕР используется механизм хеширования. Размер хеш-таблицы по возможности устанавливается равным числу страниц в пуле, но не больше 64 Кбайт. Память таблице выделяется во внутренней памяти ядра перед системными очередями. Хеш-значение вычисляется по номеру страницы и параметрам файла (номер таблицы, тип файла, номер файла).

Поиск свободной страницы в пуле ограничен просмотром не более 1/100 размера пула или 50-ю страницами (если размер пула меньше 5000 страниц), при этом поиск выполняется с учетом уровня страниц. Значение уровня странице присваивается на основе встроенного алгоритма оптимизации работы с пулом ядра СУБД (например, страницы индексных файлов имеют более высокий уровень по сравнению со страницами файла сортировки, поэтому вероятность их использования в качестве свободной страницы, т.е. вытеснение, ниже). После завершения поиска выбирается наиболее подходящая из просмотренных страниц.