|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Спецификации процедуры OptPlanReturn
Вход: список таблиц Q={Qi}. Выход: вывод оптимального плана. Алгоритм. Поиск в массиве структур str экземпляра i, где str[i].W=Q // Вывод шага оптимизации Печать (Q, "=", str[i].X, " ", str[i].Y, "метод", str[i].V.k) Если str[i].X пусто, то выйти из алгоритма // Вывод оптимального плана для левого аргумента соединения OptPlanReturn(str[i].X) // Вывод метода выбора записей для правого аргумента // соединения, которым является исходная таблица. OptPlanReturn(str[i].Y) Конец алгоритма.
1.8. Пример построения оптимального физического плана
1.8.1. Логический план
Построим оптимальный физический план для примера, который был рассмотрен ранее в разделе 1.3. В этом примере был построен логический план, представленный на рис. 1.24.
Рис. 1.24. Логический план выполнения запроса.
Ниже приведены исходные данные для построения физического плана:
1. Количество записей в исходных таблицах: T(R1)=10000, T(R2)=100000 2. Количество записей в одном блоке таблицы: LR1= LR2= 100, LJOIN=1000 3. Индексы по атрибутам и число записей в блоке индекса (L): таблица R1: индекс по атрибуту "код_пользователя" (L=200), таблица R2: индекс по атрибуту "номер_счета" (L = 200). Примечание. Записи исходных таблиц могут читаться в отсортированном виде по своим индексированным атрибутам. Записи в таблице R1 сгруппированы по атрибуту "код_пользователя" (кластеризованный индекс), записи в таблице R2 не сгруппированы по атрибуту "остаток". 4. Мощности атрибутов в исходных таблицах: I(R1, код_пользователя) = 5000, I(R1, номер_счета) = 10000, I(R2, номер_счета) = 100000, I(R2, остаток) – неизвестно. 5. Предполагается, что используются левосторонние деревья для поиска оптимального плана и применяются каналы. 6. Некоторые параметры: b = 10 – число блоков в буфере; Ccomp = Cmove = Cfilter = 0,01 мс; CB = 10 мс – время чтения/записи блока на диск. Для построения оптимального плана воспользуемся алгоритмом динамического программирования (см. п. 1.7.1).
1.8.2. Алгоритм поиска оптимального физического плана
Ниже приведена последовательность расчётов.
Определение : 1.Определение метода выбора записей из исходной таблицы R1 (Пользователь): AccessPlan(R1) (см. п. 1.7.3). 2. Определение метода выбора записей из исходной таблицы R2 (Счёт): AccessPlan(R2) (см. п. 1.7.3).
Определение метода и порядка соединения : 3. Оценка соединения Q1 и Q2 методом NLJ: в JoinPlan(Q1, Q2) (см. п. 1.7.4). 4. Оценка соединения Q1 и Q2 методом SMJ: в JoinPlan(Q1, Q2) (см. п. 1.7.4). 5. Выбор метода соединения Q1 и Q2 и заполнение структуры: в JoinPlan(Q1, Q2) (см. п. 1.7.4). 6. Оценка и выбор метода соединения Q2 и Q1 (по аналогии с пунктами 3 - 4), сравнение вариантов: JoinPlan(Q2, Q1) (см. п. 1.7.4).
Вывод оптимального физического плана: 7. Вывод физического плана: OptPlanReturn({Q1, Q2}) (см. п. 1.7.5). 8. Представление физического плана в графическом виде.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |