|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Спецификации процедуры OptPlanReturn
Вход: список таблиц Q={Qi}. Выход: вывод оптимального плана. Алгоритм. Поиск в массиве структур str экземпляра i, где str[i].W=Q // Вывод шага оптимизации Печать (Q, "=", str[i].X, " Если 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.005 сек.) |