49.1. Путь запроса#
49.1. Путь запроса #
Здесь мы даем краткий обзор этапов, которые запрос должен пройти, чтобы получить результат.
Необходимо установить соединение между прикладной программой и сервером Tantor BE. Прикладная программа передает запрос на сервер и ожидает получения результатов, отправленных сервером.
Этап разбора проверяет запрос, переданный приложением программы на корректность синтаксиса и создает дерево запроса.
Система переписывания берет дерево запроса, созданное этапом разбора, и ищет любые правила (хранящиеся в системных каталогах), которые можно применить к дереву запроса. Она выполняет преобразования, указанные в телах правил.
Одним из применений системы переписывания является реализация представлений. Каждый раз, когда выполняется запрос к представлению (т.е. к виртуальной таблице), система переписывания переписывает запрос пользователя в запрос, который обращается к базовым таблицам, указанным в определении представления.
Планировщик/оптимизатор берет (переписанное) дерево запроса и создает план запроса, который будет входным для исполнителя.
Он делает это, сначала создавая все возможные пути, ведущие к одному и тому же результату. Например, если на отношении есть индекс для сканирования, есть два пути для сканирования. Один вариант - это простое последовательное сканирование, а другой вариант - использование индекса. Затем оценивается стоимость выполнения каждого пути, и выбирается самый дешевый путь. Самый дешевый путь расширяется в полный план, который может использовать исполнитель.
Исполнитель рекурсивно проходит через дерево плана и извлекает строки в соответствии с представленным планом. Исполнитель использует систему хранения при сканировании отношений, выполняет сортировку и соединения, оценивает квалификации и, наконец, возвращает полученные строки.
В следующих разделах мы рассмотрим каждый из перечисленных выше элементов более подробно, чтобы лучше понять внутренние механизмы управления и структуры данных Tantor BE.