Ядро СУБД

Ядро СУБД запускается на требуемой БД. Для одновременной работы с несколькими БД необходимо запускать требуемое количество экземпляров ядра СУБД. Изменение БД в процессе работы экземпляра ядра СУБД не допустимо.

Уровни конфигурации СУБД:

  • настройки БД;

  • настройки ядра СУБД;

  • настройки, выполняемые с помощью SQL-команд.

Ядро СУБД обрабатывает запросы квазипараллельно, т.е. «разделяет» процессор, время и другие ресурсы для обработки SQL-запросов от разных клиентских приложений. Одним из самых важных ресурсов, выделяемых при обработке SQL-запроса, является «время непрерывной работы» (см. подпункт «Квант обработки запроса» ).

Ядро СУБД гарантированно выполняет некоторую часть обработки одного SQL-запроса (например, часть процедуры просмотра данных), и только после этого переключается на обработку SQL-запроса другого клиентского приложения (или того же самого клиентского приложения, но по другому каналу). Обработка большинства поисковых SQL-запросов сводится к просмотру одной/нескольких таблиц и, в общем случае, их индексов. Именно эта часть обработки SQL-запроса может быть прервана. СУБД, просмотрев определенное число записей при обработке SQL-запроса, запоминает состояние текущей обработки в области данных, отведенной под соответствующий канал, и переключается на обработку SQL-запроса, поступившему по другому каналу. Для ускорения обработки запроса используются индексы – двоичные «деревья», построенные по значениям индексированного столбца. Атомарная работа с «деревом» индекса (поиск, удаление, добавление значения) непрерываема. Но в промежутках между атомарными индексными операциями или после непрерывного выполнения заданного числа таких операций (настраиваемый параметр ядра СУБД) СУБД может прервать обработку текущего запроса и переключиться на обработку запроса по другому каналу.

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

Процессы обработки SQL-запросов используют выделенную ядру СУБД оперативную память ОС совместно: необходимые для каждого процесса данные считываются с диска, вытесняя другую (иногда нужную для продолжения обработки неактивного в данный момент времени SQL-запроса) информацию. Логически ресурс «память» представляет собой набор областей, содержащих разделяемую информацию (очереди (кэши) объектов БД) или неразделяемую (список каналов).

Примеры очередей (кэшей) СУБД ЛИНТЕР:

  • очередь описателей таблиц;

  • очередь описателей столбцов;

  • очередь дескрипторов файлов;

  • очередь страниц (пул ядра СУБД);

  • очередь результатов поисковых запросов;

  • очередь кодировок;

  • очередь алиасов кодировок.

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

Следующим важным ресурсом является внешняя память.

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

  • пространство файла сортировки используется монопольно процессом сортировки;

  • пространство файла бит-векторов выделяется по требованию ядра СУБД для обработки SQL-запроса и закрепляется за каналом до получения по этому каналу нового SQL-запроса или обнаружении ошибки в обработке текущего запроса.

Зависимость эффективности работы СУБД от размеров очередей, а также методы повышения быстродействия ядра СУБД ЛИНТЕР подробно рассмотрены в разделе «Параметры эффективности СУБД».

Ядро СУБД для выполнения SQL-операторов может запускать следующие процессы:

  • транслятор SQL-запросов;

  • транслятор хранимых процедур;

  • программа сортировки данных.

Так как эти процессы являются независимыми, то они могут выполняться параллельно.

Рассмотрим назначение каждого процесса подробно.