Развитие идей и приложений реляционной СУБД System R


Трансляция запросов и поддержка времени выполнения - часть 5


Соответствующий доступ к базе данных производится с использованием операций интерфейса RSS. При первом обращении прекомпилятора к оптимизатору запускается служебная транзакция, которая завершается в конце работы прекомпилятора, т.е. при завершении обработки текста исходной программы. Как и при выполнении любой другой транзакции, в ходе выполнения этой служебной транзакции в RSS накапливаются захваты объектов базы данных и снимаются при завершении служебной транзакции. Поэтому работа прекомпилятора может производиться параллельно с выполнением любых других транзакций (в частности, параллельно могут выполняться несколько прекомпиляций программ).

Работа оптимизатора выполняется в несколько шагов, причем не все шаги обязательно вовлекаются при обработке любого запроса.

Первый (обязательный) шаг работы оптимизатора состоит в том, что в дереве грамматического разбора запроса, полученном при работе процедуры грамматического разбора, производится замена имен отношений и полей на их идентификаторы. Для этого используется служебное отношение-каталог описателей отношений. Как мы уже отмечали, внутренним идентификатором отношения служит tid его описателя в отношении-каталоге. Поля идентифицируются своими номерами в данном отношении.

При выполнении первого шага работы оптимизатора имена некоторых отношений могут быть не найдены в каталоге. Это не рассматривается как ошибка, поскольку к моменту реального выполнения обрабатываемого запроса именованное в нем отношение может уже существовать. В случае возникновения такой ситуации обработка запроса на этом завершается, и формируется секция модуля доступа (модуль доступа является конечным продуктом прекомпиляции; на его структуре мы остановимся ниже), содержащая дерево грамматического разбора. Окончательная обработка запроса откладывается до попытки его реального выполнения.

Если выполнение первого шага работы оптимизатора успешно завершается, сформированное на этом шаге модифицированное дерево грамматического разбора (дерево запроса)передается второму шагу оптимизатора.


Начало  Назад  Вперед