![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Оптимизация запросов — это 1) функция СУБД, осуществляющая поиск оптимального плана выполнения запросов из всех возможных для заданного запроса, 2) процесс изменения запроса и/или структуры БД с целью уменьшения использования вычислительных ресурсов при выполнении запроса. Один и тот же результат может быть получен СУБД различными способами (планами выполнения запросов), которые могут существенно отличаться как по затратам ресурсов, так и по времени выполнения. Задача оптимизации заключается в нахождении оптимального способа.
В реляционной СУБД оптимальный план выполнения запроса — это такая последовательность применения операторов реляционной алгебры к исходным и промежуточным отношениям, которое для конкретного текущего состояния БД (её структуры и наполнения) может быть выполнено с минимальным использованием вычислительных ресурсов.
В настоящее время известны две стратегии поиска оптимального плана:
грубой силы путём оценки всех перестановок соединяемых таблиц;
на основе генетического алгоритма путём оценки ограниченного числа перестановок.
Планы выполнения запроса сравниваются исходя из следующих факторов:
потенциальное число строк, извлекаемое из каждой таблицы, получаемое из статистики;
наличие индексов;
возможность выполнения слияний (merge-join).
В общем случае соединение выполняется вложенными циклами. Однако этот алгоритм может оказаться менее эффективен, чем специализированные алгоритмы. Если у сливаемых таблиц есть индексы по соединяемым полям, или одна или обе таблицы достаточно малы, чтобы быть отсортированными в памяти, то исследуется возможность выполнения слияний.
Стратегии оптимизации: как уже отмечалось, суть оптимизации заключается в поиске минимума функции стоимости от перестановки таблиц. Независимо от стратегии, оптимизатор обязан уметь анализировать стоимость для произвольной перестановки, в то время как сами перестановки для анализа предоставляются другим алгоритмом. Исследуемое множество перестановок может отличаться от всего пространства перестановок. Исходя из этого, обобщённый алгоритм работы оптимизатора можно записать так: ТекущийПорядокТаблиц:= НайтиИсходныйПорядокТаблиц;
ЛучшийПорядокТаблиц:= ТекущийПорядокТаблиц;
НаименьшаяСтоимость:= МаксимальноВозможнаяСтоимость;
Выполнять
Стоимость:= ОценитьСтоимость(ТекущийПорядокТаблиц);
Если Стоимость < НаименьшаяСтоимость То
ЛучшийПорядокТаблиц:= ТекущийПорядокТаблиц;
НаименьшаяСтоимость:= Стоимость;
КонецЕсли;
ТекущийПорядокТаблиц:= НайтиСледующийПорядокТаблиц;
Пока (ДоступенСледующийПорядокТаблиц);
Дата публикования: 2014-11-29; Прочитано: 225 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!