- •29.Оптимизация sql-запросов. Общие сведения.
- •17.3. Оптимизация запросов
- •30.Синтаксическая оптимизация запроса.
- •31.Семантическая оптимизация запросов.
- •32.План выполнения запросов. Выбор плана.
- •33. Транзакции. Связь с ограничениями целостности.
- •34. Модель транзакций ansi/iso. (включен в ответ к 33)
30.Синтаксическая оптимизация запроса.
На этапе логической оптимизации производятся эквивалентные преобразования внутреннего представления запроса, которое «улучшают» начальное внутреннее представление в соответствии с фиксированными стратегиями оптимизатора. Характер «улучшений» связан со спецификой общей организации оптимизатора.
Простые логические преобразования запроса. Очевидный класс логических преобразований запроса составляют преобразования предикатов, входящих в условие выборки, к каноническому виду. При приведении предикатов к каноническому представлению можно вычислять константные выражения и избавляться от логических отрицаний. При приведении логического условия к каноническому представлению можно производить поиск общих предикатов и упрощать логическое выражение за счет, например, выявления конъюнкции взаимно противоречащих предикатов. Как правило, используется либо дизъюнктивная, либо конъюнктивная нормальные формы. Выбор зависит от общей организации оптимизатора.
Преобразование запроса с изменением порядка реляционных операторов. В традиционных оптимизаторах распространены логические преобразования, связанные с изменением порядка выполнения реляционных операций. Хотя немногие реляционные системы имеют языки запросов, основанные в чистом виде на реляционной алгебре, правила преобразований алгебраических выражений могут быть полезны. Реляционная алгебра используется в качестве внутреннего представления запроса. Существуют подходы, связанные с преобразованием к алгебраической форме запросов на языке SQL. Можно выявить две основные причины преобразований запросов на SQL к алгебраической форме. Во-первых, стремление к использованию реляционной алгебры в качестве унифицированного внутреннего интерфейса реляционной СУБД. Во-вторых, реляционная алгебра более проста, чем язык SQL; преобразование к алгебраической форме упрощает дальнейшие действия оптимизатора. Разумные преобразования запроса на SQL к алгебраическому представлению сокращают пространство поиска планов выполнения запроса с гарантией того, что оптимальные планы не будут потеряны. Дополнительно также уточняется, могут ли затребованные в запросе операции быть применены к объектам соответствующего типа.
Приведение запроса с вложенными подзапросами к запросу с соединениями. Основным отличием языка SQL от реляционной алгебры является возможность использовать в логических условиях выборки предикаты, содержащиеся вложенные подзапросы. Поэтому естественно стремиться к такому преобразованию, которое сделает семантику подзапроса более явной, предоставив в дальнейшем оптимизатору возможность выбрать способ выполнения запроса, наиболее точно соответствующий семантике подзапроса.
31.Семантическая оптимизация запросов.
Существуют также преобразования, использующие семантику конкретной базы данных, а не языка запросов. Любое преобразование выполняется вне зависимости от конкретной базы данных; при этом база данных хранит не просто совокупность взаимосвязанных таблиц, а некоторую семантическую информацию, определяющую целостность базы данных. Поскольку СУБД гарантирует целостность базы данных, то ограничения целостности можно рассматривать как аксиомы, в окружении которых формируются запросы к базе данных.
Цель семантической оптимизации – это отклонение некоторых запросов, которые некорректно сформулированы или содержат противоречивые требования. Запрос считается некорректным в том случае, если его результат не может быть получен в виде набора данных.
Подход, например, в СУБД System R и Ingres, основан на том, что представления в каталогах базы данных хранятся во внутренней форме, получаемой после выполнения грамматического разбора соответствующего запроса. При обработке запроса над представлением до выполнения фазы логической оптимизации производится слияние внутренних форм запроса и представления. Образуется некоторая новая внутренняя форма, и над ней производится последующая обработка запроса, включая логическую оптимизацию и выбор оптимального плана выполнения запроса.
Семантическая оптимизация основана на анализе существующей в базе данных семантической информации, которую необязательно использовать при обработке запроса, однако применение которой, может привести к его наиболее оптимальному выполнению. Если семантическая оптимизация имеет дело только со знаниями, представленными в виде набора ограничений целостности базы данных, то производится множество внутренних преобразований запроса, использующих некоторый поднабор ограничений целостности. Поддержка поиска противоречивых фраз поддерживается не всеми СУБД.