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


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


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

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

Выбранный оптимальный план выполнения запроса (путь доступа) представляется путем структурных модификаций дерева запроса на внутреннем процедурном языке ASL (Access Specification Language - язык спецификации доступа) [16]. Опорными элементами ASL являются операции RSS, но конструкции языка имеют более высокий уровень, включая, например, возможности задания итераций в форме, наиболее часто требующейся при выполнении запросов; возможности вычисления встроенных функций и т.д.


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