- •Предисловие
- •Основные функции систем управления базами данных (СУБД)
- •Основные понятия
- •Преимущества использования баз данных
- •Функции систем управления базами данных
- •Литература
- •Реляционная модель данных
- •Структуры данных. Фундаментальные свойства отношений
- •Целостность данных. Реляционные ключи
- •Манипулирование данными
- •Реляционная алгебра Кодда
- •Операции
- •Объединение
- •Пересечение
- •Разность
- •Декартово произведение
- •Сокращение (выборка, ограничение, селекция)
- •Проекция
- •Соединения
- •Деление
- •Приоритеты операций
- •Базис алгебры и ства операций
- •Базис
- •Свойства операций
- •Ограничения реляционной алгебры
- •Литература
- •Реляционное исчисление
- •Исчисление кортежей
- •Эквивалентность исчисления кортежей и реляционной алгебры
- •Исчисление доменов
- •Литература
- •Случаи неполной информации и ω-значения
- •Концепция трехзначной логики
- •Логические операторы
- •Кванторы
- •Арифметические операции и операции сравнения
- •ω-значения и домены
- •ω-значения и операторы реляционной алгебры
- •ω-значения и агрегирующие функции
- •Проблема интерпретации
- •ω-значения и ограничения целостности
- •Первичные ключи
- •Внешние ключи
- •Литература
- •Семантическое проектирование реляционных баз данных на основе ER-модели
- •Общий подход семантического моделирования
- •Основные понятия
- •Проектирование базы данных с помощью ER-модели
- •Литература
- •Проектирование реляционных баз данных при помощи нормализации
- •Жизненный цикл системы баз данных
- •Функциональные зависимости
- •Понятие функциональной зависимости
- •Тривиальные и нетривиальные зависимости
- •Замыкание множества зависимостей
- •Неприводимые множества зависимостей
- •Декомпозиция без потерь и функциональные зависимости
- •Диаграммы функциональных зависимостей
- •Сохранение независимости в смысле Риссанена
- •Многозначные зависимости
- •Нормализация
- •Понятие нормализации и её причины
- •Первая, вторая и третья нормальные формы
- •Нормальная форма Бойса–Кодда
- •Четвертая нормальная форма
- •Зависимости соединения и пятая нормальная форма
- •Литература
- •Основные принципы хранения данных во внешней памяти
- •Страничная организация хранения данных
- •Управление буферами внутренней памяти
- •Простая файловая организация страниц
- •Неупорядоченный файл
- •Упорядоченный файл
- •Индексирование
- •Индексно-прямой метод доступа
- •Индексно-последовательный метод доступа
- •Индекс на основе B+-деревья
- •Хэширование
- •Индексированные кластеры
- •Хэшированные кластеры
- •Литература
- •Управление транзакциями и синхронизация в реляционных СУБД
- •Понятие транзакции
- •Фундаментальные свойства транзакций
- •Изолированность транзакций
- •Синхронизационные блокировки
- •Простые блокировки
- •Гранулированные (намеренные) блокировки
- •Предикатные блокировки
- •Тупиковые ситуации
- •Метод временных меток
- •Механизм выделения версий данных
- •Литература
- •Журнализация и восстановление в реляционных СУБД
- •Журнализация и буферизация
- •Индивидуальный откат транзакции
- •Восстановление после мягкого сбоя
- •Восстановление после жесткого сбоя
- •Литература
- •Выполнение и оптимизация запросов в реляционных СУБД
- •Процесс оптимизации запроса
- •Преобразование запроса во внутреннюю форму
- •Преобразование запроса в каноническую форму
- •Выбор потенциальных низкоуровневых процедур
- •Генерация различных вариантов планов вычисления запроса и выбор плана с минимальными затратами
- •Низкоуровневая оптимизация операции выборки
- •Низкоуровневая оптимизация операции соединения
- •Литература
11.1. Процесс оптимизации запроса
Общая схема выполнения и оптимизации запроса представлена на
Исходный запрос
Процессор языка |
Синтаксический анализ, |
манипулирования |
обработка представлений, |
|
|
данными |
трансляция |
|
Каталог |
Откомпилированный |
|
запрос |
||
|
Метаданные |
Оптимизатор |
Выражение реляционной алгебры
Трансформация выражения, оценка стоимости выполнения и пр.
База данных |
План выполнения |
Оптимизированный код |
|
запроса |
|
||
|
|
|
|
|
|
|
|
Данные |
Диспетчер этапа |
Выполнение |
|
прогона |
|||
|
|
Результат |
Рис. 9. Схема оптимизации запроса
Процесс можно разбить на следующие стадии:
1.Декомпозиция: преобразование запроса во внутреннюю форму.
2.Преобразование запроса в каноническую форму.
3.Выбор потенциальных низкоуровневых процедур.
4.Генерация различных вариантов планов вычисления запроса и выбор плана с минимальными затратами.
Вроли метаданных, хранимых в системном каталоге, выступают различные статистические данные, например:
• Метаданные о базовых отношений
–Кардинальность (количество кортежей)
–Количество занимаемых страниц во внешней памяти
•Метаданные об атрибутах базовых отношений
–Количество различных значений атрибута
–Наибольшие и наименьшие значения атрибута
–Наиболее часто и редко встречаемые значения атрибута
•Метаданные об индексах
–Признак, является ли индекс кластеризованным
–Количество листовых страниц в индексе
–Количество уровней индекса
Преобразование запроса во внутреннюю форму
На этой стадии выполняется преобразование первоначального запроса в некоторое внутреннее представление, более удобное для машинной обработки. Обработка представлений (т. е. процесс замены ссылок на представления выражениями, определяющими соответствующие представления) также выполняется на этом этапе.
Чаще всего для внутреннего представления запросов используется та или иная модификация син-
таксического дерева, которое в этом случае называют деревом запроса.
74
Для визуального представления деревьев запросов могут использоваться объектные графы и гра-
фы операций:
•В объектных графах узлы представляют объекы, такие как переменные (отношений) и константы. Дуги описывают предикаты, которым эти объекты должны удовлетворять. Объектные графы содержат свойства результатов запросов и поэтому тесно связаны с реляционным исчис-
лением.
•Графы операций описывают управляемые операциями потоки данных путем представления операций как узлов, связанных дугами, указывающими направление движения данных. Графы операций используются для представления выражений реляционной алгебры.
Например, для запроса реляционного исчисления
[<e.ename> OF
EACH e IN employees:
e.status = professor
AND
SOME p IN papers
(e.enr = p.enr AND p.year = 1981)]
и эквивалентного ему запросу реляционной алгебры
ename status professor employees 'enr enr year 1981ppapersq
объектный граф и граф операций представлены на рис. 10а и рис. 10б соответственно (заметим, что они могут представлять с помощью других условных обозначений).
(а) Объектный граф |
(б) Граф операций |
Рис. 10. Графовое представление запросов
Преобразование запроса в каноническую форму
На этой стадии оптимизатор выполняет несколько операций оптимизации, которые гарантированно являются приемлемыми независимо от реальных значений данных и существующих путей доступа к ним.
Пусть Q — множество всех возможных запросов.
75
Определение 1. Запросы Q1; q2 P Q называются эквивалентными, если в результате их работы получается одно и то же отношение (с точностью до порядка кортежей и атрибутов, если он явно не задан в запросе).
Понятно, что введенное отношение на множестве Q является отношение эквивалентности в силу выполнения свойств рефлексивности, симметричности и транзитивности. А значит, множество Q можно разбить на классы эквивалентности, в каждом из которых находятся попарно эквивалентные запросы. Из каждого класса эквивалентности можно выбрать по одному самому оптимальному запросу из всех в данном классе, образовав тем самым множество C, которое назовем множеством канонических форм запросов. Таким образом, @q P Q найдется запрос p P C, которому эквивалентно q. Поэтому, чтобы доказать различные интересующие результаты, достаточно изучить менее мощное множество объектов C, а не более мощное множество Q.
Чтобы преобразовать результаты выполнения стадии 1 в некоторую эквивалентную, но более эффективную форму, оптимизатор использует определенные правила, или законы преобразования (основная цель — уменьшение количества обрабатываемых данных):
•Свойства арифметических операций
•Свойства логических операций
–можно строить КНФ для обычных (непредикатных) логических формул
–можно строить предваренную форму с матрицей в виде КНФ для предикатных формул
–применение различных логических свойств
–...
•Свойства реляционных операций.
–последовательные выборки заменяются одной (каскад выборок)
–аналогично с последовательными проекциями (каскад проекций)
–выборка из проекции заменяется на проекцию выборки
–выборка из соединения заменяется на соединение выборок
–использование распределительных законов, ассоциативности и коммутативности, законы поглощения
–...
Еще для оптимизации могут использоваться семантические преобразования. Целью проведения семантического анализа является отклонение запросов, которые некорректно сформулированы или содержат противоречивые требования. Также под семантическим преобразованием понимается преобразование запроса так, чтобы не было лишних обращений к ресурсам (например, в запросе могут участвовать отношения, которые необязательны для получения нужного результата). Запрос считается некорректно сформулированным, если его компоненты не участвуют в формировании результирующего набора. Чаще всего подобная ситуация возникает тогда, когда отсутствуют определения необходимых операций соединения. Запрос считается противоречивым, если его предикату не соответствует ни один кортеж.
Выбор потенциальных низкоуровневых процедур
После преобразования внутренней формы запроса в более подходящую (каноническую) форму, оптимизатор должен определить, как следует выполнять запрос, представ-ленный в этой канонической форме. На данной стадии принимаются во внимание такие факторы, как наличие индексов и других физических путей доступа, статистическое распределение существующих значений данных, физическая кластеризация хранимых данных и т. п.
Основная стратегия состоит в том, чтобы рассматривать выражение запроса как серию операций (например, реляционных, но чтобы их не путать в случае различия операции называют «низкоуровневыми»), которые в определенной степени зависят одна от другой. Для каждой операции (а также, возможно, для нескольких часто встречающихся комбинаций подобных операций) оптимизатор
76