- •Базы данных
- •Раздел 5. Средства разработки приложений. Защита баз данных (Лекции 15÷16)
- •Задачи администратора базы данных
- •Пример. Обязанности администратора базы данных oracle
- •Защита данных
- •Идентификация и проверка подлинности пользователей
- •Управление доступом
- •Поддержание целостности данных в субд
- •Тиражирование данных
- •Угрозы, специфичные для субд
- •Средства поддержания высокой готовности
- •Подходы к управлению производительностью субд
- •Обработка запросов
- •Эффективные алгоритмы выполнения запросов
Эффективные алгоритмы выполнения запросов
Оптимизация запросов состоит в выборе оптимального (или близкого к таковому) способа выполнения запроса на основе:
• особенностей физической структуры БД и поддерживаемых в ней управляющих структур;
• заложенных в систему знаний о допустимых стратегиях выполнения элементарных составляющих запроса;
• той или иной статистической информации, позволяющей оценить эффективность выбранного плана выполнения запроса.
Для оптимизатора запроса все эти данные являются внешними, т. е. оптимизация ограничена внешними факторами. При этом, если оценки планов выполнения запросов близки к реальным, то вероятность выбора неоптимального плана уменьшается, в связи с чем работы по выработке более эффективных структур хранения БД, новых управляющих структур и новых алгоритмов выполнения реляционных операций непосредственно связаны с оптимизацией запросов.
Алгоритмы реляционных соединений. Работы, связанные с созданием эффективных структур данных и алгоритмов выполнения реляционных операций, касаются реляционных соединений в связи с распространенностью и важностью операции соединения. Тем не менее надо повышать эффективность и прочих операций.
Известно, что возможности агрегатных запросов наиболее полно поддерживаются на языке SQL. В списке выборки оператора SELECT этого языка наряду с арифметическими выражениями, построенными из имен полей отношений (указанных в списке FROM) и констант, встречаются арифметические выражения, включающие агрегатные функции COUNT, AVG, MIN и МАХ, параметрами которых могут быть арифметические выражения первого типа. Выполнение запросов с агрегатными функциями, как правило, требует сортировок. В этом случае сначала выполняется сортировка, а затем над отсортированным отношением или группами его кортежей вычисляются агрегатные функции. Предлагаемая оптимизация этой процедуры проста – совместить, если это возможно, процесс сортировки и вычисления агрегатных функций. Тогда отпадет необходимость повторного сканирования отсортированного отношения.
