Оценочное решение
В данной статье представляется оценочное решение проблемы выбора надлежащей SIPS. Мы реализовали свое решения в системе баз данных DB2 C/S V2 (основанной на системе Starburst [HCL+90]), в которой поддерживается перезапись на основе магических множеств как преобразование «запрос-в-запрос». Архитектура системы показана на рис. 3. Пользовательский запрос поступает прямо на вход оценочного оптимизатора, который решает, выполнять или нет перезапись на основе магических множеств. В то время когда оптимизатор анализирует пространство возможных порядков и методов соединений, он также исследует и пространство возможных вариантов для перезаписи на основе магических множеств. Если принимается решение о том, что никакая перезапись не требуется, оптимизатор генерирует план выполнения обычным образом и посылает его процессору выполнения. С другой стороны, если оптимизатор решает, что магическая перезапись требуется, то он также выбирает одну конкретную SIPS для перезаписи, которая руководит применением преобразования на основе магических множеств. После того, как запрос перезаписывается, он снова оптимизируется для генерации плана выполнения. В обсуждавшемся выше решении Starburst [MP94] впервые предлагалась двухпроходная архитектура, и мы используем ту же идею, поскольку хотели бы избежать серьезных изменений в существующих компонентах системы. Альтернативный подход, который мы обсуждаем в разд. 7, состоит в реализации магической перезаписи с помощью алгебраических преобразований (вместо перезаписи «SQL-в-SQL»).
1 При наличии многих вариантов перезаписи на основе магических множеств наиболее практичным подходом в контексте РСУБД является перезапись на основе дополнительных магических множеств, используемая в этой статье.
2 В литературе фильтрующее множество и PartialResult называются «магическим» множеством и «дополнительным» магическим множеством соответственно.