Магия сохраняет силу


Эксперимент 1 - часть 2


Предикат на itp.qcomp таков, что в связывании (itp_itemn) не передаются какие-либо дубликаты.

При использовании преобразования методом магических множеств вычисляется дополнительное магическое множество s_mag как временная таблица (Mla), s_mag используется для вычисления сокращенного представления mag_itemtlme (Mlb), и исходный запрос переписывается с использованием сокращенного представления (Mlc).

(Mla): s_mag AS (SELECT DISTINCT itm.* FROM itp, itm WHERE qcomp = 450 AND itp_itemn = itm_itemn)

(Mlb: mag_itemtlme (itemn, whcen, avgtime) AS (SELECT itl_iltemn, itl_whcen, AVG(loctime) FROM s_mag, itl WHERE s_mag.itemn = itl.itemn GROUPBY itl.itemn, itl_whcen)

(Mlc): SELECT DISTINCT s_mag.*, whcen, avgtime FROM s_mag, mag_itemtlme WHERE s_mag.itemn = mag_itemtime.itemn

В плане для Ml представление mag_itemtlme вычисляется методом соединения вложенного цикла с использованием s_mag (менее мощной таблицы) как внешней таблицы и itl (более мощной таблицы) как внутренней таблицы и применением индекса на столбце itemn таблицы itl для извлечения только релевантных кортежей этой таблицы.

Сводка результатов производительности приведена в таб. 2. Для каждого запроса мы приводим общее время и время ввода/вывода. Числовые значения нормализованы с принятием значения 100 для общего времени выполнения исходного запроса. Таким образом, значение общего времени 0.40 для запроса с корреляцией в Эксперименте1 означает, что для коррелированного запроса потребовалось 40% от времени исполнения исходного запроса, а значение 0.280 для ввода/вывода означает, что система ввода/вывода была занята 28% от общего времени выполнения исходного запроса.

Таб. 2. Относительное общее время и время ввода/вывода запросов из экспериментов 1 и 2

Оба метода позволили повысить эффективность на два порядка, сократив общее время с трех часов до менее одной минуты. Ни один из методов не показал значительных преимуществ перед другим, поскольку оба привели к очень похожим планам вычисления представления vitemtime, которое является дорогостоящей частью запроса Q1.При использовании корреляции связывания на itemn прямо использовались для доступа к itl через индекс. При использовании метода магических множеств соединение вложенным циклом извлекало множество связываний из s_mag и использовало их для доступа к itl точно таким же образом. Коррелированный запрос оказался немного быстрее, потому что для магического запроса M1 требовалось вычисление дополнительного магического множества.




Начало  Назад  Вперед



Книжный магазин