
- •Оптимизация sql-запросов
- •Последовательность оптимизации запросов и используемые законы реляционной алгебры
- •Основные шаги оптимизации
- •Законы реляционной алгебры
- •Построение логического плана
- •Преобразование запроса в формулу реляционной алгебры
- •Оптимизация формулы реляционной алгебры
- •Иллюстрация логической оптимизации
- •Пример построения логического плана
- •Оптимизация запроса
- •Порядок выполнения запроса на логическом уровне
- •Построение физического плана
- •Шаги построения физического плана
- •Отличие физического плана от логического
- •Методы выбора записей из исходной таблицы
- •1. Чтение всех записей таблицы и их фильтрация.
- •2. Чтение записей с помощью индекса и их фильтрация.
- •Оценка числа кортежей в промежуточной таблице q
- •Оценка числа блоков в промежуточной таблице q
- •Порядок соединения таблиц
- •Левостороннее дерево соединений
- •Кустовое дерево соединений
- •Правостороннее дерево соединений
- •Методы соединения таблиц
- •Метод вложенных циклов (nlj – Nested Loop Join)
- •Метод сортировки-слияния (smj – Sort Merge Join)
- •Метод хешированного соединения (hj – Hash Join)
- •Число кортежей, блоков и мощности атрибутов в соединении
- •Поиск физического плана с минимальной стоимостью
- •Алгоритм поиска для левостороннего дерева соединений
- •Формат экземпляра структуры данных
- •Спецификации процедуры AccessPlan
- •Спецификации процедуры JoinPlan
- •Спецификации процедуры OptPlanReturn
- •Пример построения оптимального физического плана
- •Логический план
- •Алгоритм поиска оптимального физического плана
- •Определение метода выбора записей из исходной таблицы r1
- •Определение метода выбора записей из исходной таблицы r2
- •Оценка соединения q1 и q2 методом nlj
- •Оценка соединения q1 и q2 методом smj
- •Выбор метода соединения q1 и q2 и заполнение структуры
- •Оценка и выбор метода соединения q2 и q1
- •Вывод физического плана
Оценка соединения q1 и q2 методом smj
Продолжение алгоритма JoinPlan (Q1, Q2) (см. п. 1.7.4):
// Оценка стоимости соединения R и S методом SMJ, i=2
// (формулы (5.9), используются данные из str[1], str[2] - см.
// пункты 1.8.3 и 1.8.4).
// Таблица Q2 уже отсортирована по номеру счета, так как
// имеется индекс по этому атрибуту.
Выбор метода соединения q1 и q2 и заполнение структуры
Продолжение алгоритма JoinPlan (Q1, Q2) (см. п. 1.7.4):
// Стоимость соединения Q1 и Q2
С = min(С1 ,С2)= min(660, 340) = С2 =340 (мс) // SMJ
// Текущая стоимость плана
С = str[1].Z + str[2].Z + C = 0,32 + 11000 + 340 11340 (мс),
// где str[1].Z и str[2].Z – стоимости выбора записей из
// исходных таблиц R1 и R2 (см. пункты 1.8.3 и 1.8.4),
// С (справа) – стоимость соединения по методу SMJ.
// Стоимость ввода/вывода
СI/O = str[1].ZIO + str[2].ZIO + CI/O 2 = 0,3 + 10000 + 10 ≈ 10010 (мс).
// Значения полей V структуры str[3] (формулы (5.10) в п. 1.6.4):
.
Заполнение структуры str[3] (п. 1.7.2):
str[3] = {{Q1, Q2}, {Q1}, {Q2}, // W, X, Y
11340, 10010, // Z, ZIO
{2, 1, {2}, 2} } // V -
,
B, I, k
Оценка и выбор метода соединения q2 и q1
В алгоритме динамического программирования (см. п. 1.7.1):
n = 2, i = 2, P = (Q1, Q2), Qj = Q1 .
В JoinPlan (Q2, Q1) (см. п. 1.7.4):
R = P – Q1 = Q2, S = Q1 , "а" – атрибут "номер_счета".
Алгоритм:
m1 = 2, m2 = 1 // номера экземпляров в структуре str, т.к.
// str[m1=2].W= Q2 и str[m2=1].W= Q1
// Оценка стоимости соединения R и S (см. формулы пунктов 1.8.5 и
// 1.8.6)
1. NLJ, i=1
2. SMJ, i=2
// Стоимость соединения Q2 и Q1
С = min(С1,С2) = С2= 340 (мс) // SMJ
// Текущая стоимость плана
С = str[2].Z + str[1].Z + C = 11340 (мс)
Запись str[3] не изменяется, так как старое значение str[3].Z совпадает с новым значением (C).
Вывод физического плана
Алгоритм OptPlanReturn (см. п. 1.7.5):
1.
метод 2 (т.е. SMJ)
2. Q1 = метод 2
(т.е. IndexScan(R1, код_пользователя = 3) +
Filter (реализация проекции по номеру счета)
)
3. Q2 = метод 1
(т.е. TableScan(R2) +
Filter (селекция по условию остаток > 1500 и реализация
проекции по остатку и номеру счета)
)
Метод чтения записей из R2 (чтение всех записей) является причиной высокой стоимости выполнения запроса.
На Рис. 1 .25 представлен разработанный оптимальный физический план в графическом виде.
Рис. 1.25. Представление физического плана в графическом виде.