Влияние размеров очередей на производительность СУБД
Память, выделенная ядру СУБД, используется следующим образом:
-
сначала в ней размещаются системные очереди;
-
затем все очереди ядра СУБД;
-
оставшееся место отводится под кэш ядра СУБД.
Примечание
При задании избыточных размеров очередей ядро СУБД не стартует.
Размер кэша может быть до 2 млрд. страниц. Если размер кэша недостаточен для запуска ядра СУБД, то оно не запустится.
Размер очередей (т.е. максимально возможное количество хранящихся в них элементов) устанавливается параметрами команды SET утилиты gendb (см. документ «Создание и конфигурирование базы данных»), например:
TABLES – размер очереди дескрипторов таблиц (по умолчанию 100);
COLUMNS – размер очереди дескрипторов столбцов (по умолчанию 500);
FILES – размер очереди файлов (по умолчанию 200);
USERS – размер очереди пользователей (по умолчанию 100);
CHANNELS – размер очереди каналов (по умолчанию 100).
В СУБД ЛИНТЕР только очередь каналов является статической, остальные очереди динамические.
Очередь является динамической, если при ее переполнении последний элемент очереди удаляется и замещается новым, т.е. происходит вытеснение элементов очереди.
Статическая очередь (т.е. очередь каналов) переполниться не может. Если СУБД настроена на работу с 5 каналами, то при попытке открыть 6-й канал клиентскому приложению, пославшему команду на открытие канала, будет возвращен соответствующий код завершения.
Размер любой очереди вычисляется как
< длина очереди > * < размер элемента очереди >
Размер элементов разных очередей колеблется в среднем от 50 до 1500 байт. Для поиска страниц в пуле ядра СУБД ЛИНТЕР используется механизм хеширования. Размер хеш-таблицы по возможности устанавливается равным числу страниц в пуле, но не больше 64 Кбайт. Память таблице выделяется во внутренней памяти ядра перед системными очередями. Хеш-значение вычисляется по номеру страницы и параметрам файла (номер таблицы, тип файла, номер файла).
Поиск свободной страницы в пуле ограничен просмотром не более 1/100 размера пула или 50-ю страницами (если размер пула меньше 5000 страниц), при этом поиск выполняется с учетом уровня страниц. Значение уровня странице присваивается на основе встроенного алгоритма оптимизации работы с пулом ядра СУБД (например, страницы индексных файлов имеют более высокий уровень по сравнению со страницами файла сортировки, поэтому вероятность их использования в качестве свободной страницы, т.е. вытеснение, ниже). После завершения поиска выбирается наиболее подходящая из просмотренных страниц.