Классика баз данных - статьи

       

в блоке имеется более одного


Если в блоке имеется более одного отношения, оцениваются перестановки порядка соединений и методы выполнения соединений. План доступа, минимизирующий общую стоимость вычисления блока, выбирается из дерева возможных путей. Результатом является план выполнения, представленный на языке ASL (Access Specification Language) [].

После того, как для каждого блока запроса выбирается план и представляется в дереве синтаксического разбора, вызывается ГЕНЕРАТОР КОДА. ГЕНЕРАТОР КОДА - это табличная программа, которая транслирует ASL-деревья в машинный код, который предназначен для выполнения плана, выбранного ОПТИМИЗАТОРОМ. Это делается путем использования относительно небольшого числа шаблонов кода, по одному для каждой разновидности методов выполнения соединений (включая отсутствие соединений). Блоки запросов для вложенных запросов трактуются как "подпрограммы", возвращающие значения в соответствующие предикаты. ГЕНЕРАТОР КОДА подробнее описан в [].

В течение генерации кода дерево синтаксического разбора заменяется выполняемым машинным кодом и ассоциированными с ним структурами данных. Управление немедленно передается этому коду, или код сохраняется в базе данных для последующего выполнения в зависимости от происхождения оператора (программа или терминал). В любом случае, когда код в конце концов выполняется, он обращается к внутренней системе хранения System R (RSS) через интерфейс системы хранения (RSI) для сканирования каждого из физически хранимых отношений, указанных в запросе. Это сканирование производится через пути доступа, выбранные ОПТИМИЗАТОРОМ. Команды RSI, которые могут использоваться в сгенерированном коде, описываются в следующем разделе.


Содержание  Назад  Вперед