Классика баз данных - статьи

       

с использованием Starburst также будет


В DB2/* с использованием Starburst также будет поддерживаться эта возможность.

В DB2 для MVS и в DB2/* используются одни и те же основные формулы для оценки показателя фильтрации [DB293c]. Значения по умолчанию, используемые в выражениях, переменных основного языка и параметрах, настроены в соответствии с паттернами использования типичных заказчиков и, по существу, одни и те же во всех продуктах.

Во всех продуктах используются классические формулы для составных предикатов, в которых предполагается независимость конъюнктов, и поэтому их показатели фильтрации перемножаются [SAC+79]. Иногда точная оценка показателей фильтрации затрудняется наличием корреляции предикатов. Для уменьшения этой в проблемы в DB2 для MVS, как правило, для вычисления размера результата используется наиболее селективный предикат на каком либо заданном столбце.

Для отслеживания потенциальной корреляции между предикатами также используется статистика на индексах. Например, комбинированный (перемноженный) показатель фильтрации для предикатов, которые полностью уточняют индекс для получения ровно одного ключа, не может быть более селективным, чем показатель селективности, полученный путем инверсии числа различных значений ключа. Предикаты вида

C1 > :hv1 OR (C1= :hv1 AND C2 >= :hv2) OR (C1= :hv1 AND C2 = :hv2 AND C3 >= hv3)

(где :hv1, :hv2 и :hv3 – переменные основной программы) анализировать трудно, поскольку они часто используются для позиционирования курсора на индексе при выполнении операции открытия курсора, или после COMMIT, ROLLBACK WORK, или другого прерывания пакетной обработки (заметим, что COMMIT WITH HOLD не решает эту проблему полностью, поскольку для курсора по-прежнему требуется начальное открытие, а удержание курсора не работает при использовании логики рестарта). В DB2 для MVS используются специальные формулы для попытки оценить эффект корреляции между AND-предикатами, обнаруживаемыми в OR-предикатах.

В модель для оценки размера результата соединения в DB2/* с использованием Starburst будет внедрен улучшенный алгоритм определения показателей фильтрации, в котором учитываются избыточные предикаты на том же столбце [SSar].Поскольку при перезаписи запроса добавляются и выводятся предикаты, появление избыточных предикатов вполне вероятно.


Содержание  Назад  Вперед