Введение в базы данных
Лекция 8
План лекции
Оптимизация запросов:
Оптимизация выполнения запросов
Написать запрос так, чтобы выполнить наименьшее число простых операций (чтений блоков и страниц).
Средства оптимизации
В РСУБД оптимизацию можно проводить:
Оптимизация средствами СУБД
Большинство техник оптимизации запросов автоматизированы.
Планировщик запроса
Сравнивает до сотен различных стратегий выполнения запроса.
Чем пользуется планировщик
Стадии оптимизации запроса
Стадии оптимизации запроса
Перезапись запроса
Преобразование запроса во внутреннюю форму (реляционную алгебру).
Избегая синтаксического сахара и других различных вариантов написания одного и того же запроса, понять, что и как нужно выбрать.
Далее можно преобразовывать выражение по правилам реляционной алгебры, снижая количество обрабатываемых данных.
Выбор метода исполнения
Выбор структуры исполнения
Как исполняется каждая операция.
Оценка трудоемкости (EXPLAIN) и свойств операции (как меняются свойства выборки после операции).
Оценка плана
Перезапись запроса
Минимизация запроса
Повторное применение фильтрации заменяется одинарным:
Повторное применение проекции заменяется внешней:
Фильтрация осуществляется до проекции:
Дистрибутивность операций
Фильтрация:
Дистрибутивность операций
Проекция:
Обработка условий
Примеры:
Преобразование предикатов
Конъюнктивная нормальная форма:
Слева на право, до первой лжи
Дизъюнктивная нормальная форма:
Слева на право, до первой истины
Семантическая оптимизация
Применение знания об ограничениях:
Не эквивалентные запросы, но тот же результат
Выбор метода исполнения
Цепь (или сеть) операций
Типы операций
Курсоры
Выдают записи последовательно.
Фильтрация
Проекция
Сортировка
Просмотр таблиц
Объединение
Пересечение
Вложенный перебор
Поиск по индексу
Поиск по хэшу
Итог двух этапов: реальные стратегии
Зная:
можно оценить сложность запроса целиком + предположить занимаемую память.
EXPLAIN
Выбор структуры исполнения
Планирование операций
Порядок соединений
Динамическое программирование на подмножествах.
Можно найти лучший вариант соединения отношений не вычисляя одно и то же несколько раз.
Оценка хранения и распределения данных
Размер и распределение
Типы распределений
Упрощающие предположения
Оцениваемые значения
Оценка операций
Входные данные:
Как СУБД выбирает стратегию
Как пользователь советует СУБД
Подсказки:
SELECT /*+ full(t) */ t.name FROM tbl1 t WHERE ...�SELECT /*+ index(t ind_date) */ t.name FROM tbl1 t WHERE ...�