Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Оптимизация запросов



Оптимизация запросов — это 1) функция СУБД, осуществляющая поиск оптимального плана выполнения запросов из всех возможных для заданного запроса, 2) процесс изменения запроса и/или структуры БД с целью уменьшения использования вычислительных ресурсов при выполнении запроса. Один и тот же результат может быть получен СУБД различными способами (планами выполнения запросов), которые могут существенно отличаться как по затратам ресурсов, так и по времени выполнения. Задача оптимизации заключается в нахождении оптимального способа.

В реляционной СУБД оптимальный план выполнения запроса — это такая последовательность применения операторов реляционной алгебры к исходным и промежуточным отношениям, которое для конкретного текущего состояния БД (её структуры и наполнения) может быть выполнено с минимальным использованием вычислительных ресурсов.

В настоящее время известны две стратегии поиска оптимального плана:

грубой силы путём оценки всех перестановок соединяемых таблиц;

на основе генетического алгоритма путём оценки ограниченного числа перестановок.

Планы выполнения запроса сравниваются исходя из следующих факторов:

потенциальное число строк, извлекаемое из каждой таблицы, получаемое из статистики;

наличие индексов;

возможность выполнения слияний (merge-join).

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

Стратегии оптимизации: как уже отмечалось, суть оптимизации заключается в поиске минимума функции стоимости от перестановки таблиц. Независимо от стратегии, оптимизатор обязан уметь анализировать стоимость для произвольной перестановки, в то время как сами перестановки для анализа предоставляются другим алгоритмом. Исследуемое множество перестановок может отличаться от всего пространства перестановок. Исходя из этого, обобщённый алгоритм работы оптимизатора можно записать так: ТекущийПорядокТаблиц:= НайтиИсходныйПорядокТаблиц;

ЛучшийПорядокТаблиц:= ТекущийПорядокТаблиц;

НаименьшаяСтоимость:= МаксимальноВозможнаяСтоимость;

Выполнять

Стоимость:= ОценитьСтоимость(ТекущийПорядокТаблиц);

Если Стоимость < НаименьшаяСтоимость То

ЛучшийПорядокТаблиц:= ТекущийПорядокТаблиц;

НаименьшаяСтоимость:= Стоимость;

КонецЕсли;

ТекущийПорядокТаблиц:= НайтиСледующийПорядокТаблиц;

Пока (ДоступенСледующийПорядокТаблиц);





Дата публикования: 2014-11-29; Прочитано: 214 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.01 с)...