Механизм параллельного доступа

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

Это первый уровень распараллеливания обработки SQL-запросов.

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

Второй уровень распараллеливания организует само ядро СУБД ЛИНТЕР. Ядро СУБД всегда принимает на обработку поступивший запрос. Если ресурсы ядра СУБД позволяют обработать запрос, то он ставится в очередь на обработку (иначе возвращается соответствующий код завершения), причем обработка этого запроса будет выполняться параллельно с обработкой других запросов, принятых на исполнение. Однако в отличие от ядра СУБД процессы SQL-транслятора, системных сортировок и транслятора хранимых процедур обрабатывают поступающие им от ядра СУБД запросы последовательно. Ядро исполняется строго в одной нити, и параллельность исполнения достигается за счет кооперативной многозадачности ядра.

СУБД ЛИНТЕР имеет настраиваемый параметр квант обработки, в течение которого непрерывно ведется работа над одним запросом. По завершении кванта обработки система диспетчеризации, проанализировав ситуацию, с учетом приоритетов и доступных ресурсов выбирает новый канал или текущий и планирует его работу на следующем кванте.