49.1. Путь запроса#

49.1. Путь запроса

49.1. Путь запроса

Здесь мы даем краткий обзор этапов, которые запрос должен пройти, чтобы получить результат.

  1. Необходимо установить соединение между прикладной программой и сервером Tantor SE-1C. Прикладная программа передает запрос на сервер и ожидает получения результатов, отправленных сервером.

  2. Этап разбора проверяет запрос, переданный приложением программы на корректность синтаксиса и создает дерево запроса.

  3. Система переписывания берет дерево запроса, созданное этапом разбора, и ищет любые правила (хранящиеся в системных каталогах), которые можно применить к дереву запроса. Она выполняет преобразования, указанные в телах правил.

    Одним из применений системы переписывания является реализация представлений. Каждый раз, когда выполняется запрос к представлению (т.е. к виртуальной таблице), система переписывания переписывает запрос пользователя в запрос, который обращается к базовым таблицам, указанным в определении представления.

  4. Планировщик/оптимизатор берет (переписанное) дерево запроса и создает план запроса, который будет входным для исполнителя.

    Он делает это, сначала создавая все возможные пути, ведущие к одному и тому же результату. Например, если на отношении есть индекс для сканирования, есть два пути для сканирования. Один вариант - это простое последовательное сканирование, а другой вариант - использование индекса. Затем оценивается стоимость выполнения каждого пути, и выбирается самый дешевый путь. Самый дешевый путь расширяется в полный план, который может использовать исполнитель.

  5. Исполнитель рекурсивно проходит через дерево плана и извлекает строки в соответствии с представленным планом. Исполнитель использует систему хранения при сканировании отношений, выполняет сортировку и соединения, оценивает квалификации и, наконец, возвращает полученные строки.

В следующих разделах мы рассмотрим каждый из перечисленных выше элементов более подробно, чтобы лучше понять внутренние механизмы управления и структуры данных Tantor SE-1C.