Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы 29-33 и 34 маленько.doc
Скачиваний:
13
Добавлен:
11.04.2015
Размер:
145.41 Кб
Скачать
      1. 30.Синтаксическая оптимизация запроса.

На этапе логической оптимизации производятся эквивалентные преобразования внутреннего представления запроса, которое «улучшают» начальное внутреннее представление в соответствии с фиксированными стратегиями оптимизатора. Характер «улучшений» связан со спецификой общей организации оптимизатора.

  1. Простые логические преобразования запроса. Очевидный класс логических преобразований запроса составляют преобразования предикатов, входящих в условие выборки, к каноническому виду. При приведении предикатов к каноническому представлению можно вычислять константные выражения и избавляться от логических отрицаний. При приведении логического условия к каноническому представлению можно производить поиск общих предикатов и упрощать логическое выражение за счет, например, выявления конъюнкции взаимно противоречащих предикатов. Как правило, используется либо дизъюнктивная, либо конъюнктивная нормальные формы. Выбор зависит от общей организации оптимизатора.

  2. Преобразование запроса с изменением порядка реляционных операторов. В традиционных оптимизаторах распространены логические преобразования, связанные с изменением порядка выполнения реляционных операций. Хотя немногие реляционные системы имеют языки запросов, основанные в чистом виде на реляционной алгебре, правила преобразований алгебраических выражений могут быть полезны. Реляционная алгебра используется в качестве внутреннего представления запроса. Существуют подходы, связанные с преобразованием к алгебраической форме запросов на языке SQL. Можно выявить две основные причины преобразований запросов на SQL к алгебраической форме. Во-первых, стремление к использованию реляционной алгебры в качестве унифицированного внутреннего интерфейса реляционной СУБД. Во-вторых, реляционная алгебра более проста, чем язык SQL; преобразование к алгебраической форме упрощает дальнейшие действия оптимизатора. Разумные преобразования запроса на SQL к алгебраическому представлению сокращают пространство поиска планов выполнения запроса с гарантией того, что оптимальные планы не будут потеряны. Дополнительно также уточняется, могут ли затребованные в запросе операции быть применены к объектам соответствующего типа.

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

      1. 31.Семантическая оптимизация запросов.

Существуют также преобразования, использующие семантику конкретной базы данных, а не языка запросов. Любое преобразование выполняется вне зависимости от конкретной базы данных; при этом база данных хранит не просто совокупность взаимосвязанных таблиц, а некоторую семантическую информацию, определяющую целостность базы данных. Поскольку СУБД гарантирует целостность базы данных, то ограничения целостности можно рассматривать как аксиомы, в окружении которых формируются запросы к базе данных.

Цель семантической оптимизации – это отклонение некоторых запросов, которые некорректно сформулированы или содержат противоречивые требования. Запрос считается некорректным в том случае, если его результат не может быть получен в виде набора данных.

Подход, например, в СУБД System R и Ingres, основан на том, что представления в каталогах базы данных хранятся во внутренней форме, получаемой после выполнения грамматического разбора соответствующего запроса. При обработке запроса над представлением до выполнения фазы логической оптимизации производится слияние внутренних форм запроса и представления. Образуется некоторая новая внутренняя форма, и над ней производится последующая обработка запроса, включая логическую оптимизацию и выбор оптимального плана выполнения запроса.

Семантическая оптимизация основана на анализе существующей в базе данных семантической информации, которую необязательно использовать при обработке запроса, однако применение которой, может привести к его наиболее оптимальному выполнению. Если семантическая оптимизация имеет дело только со знаниями, представленными в виде набора ограничений целостности базы данных, то производится множество внутренних преобразований запроса, использующих некоторый поднабор ограничений целостности. Поддержка поиска противоречивых фраз поддерживается не всеми СУБД.