Оценочная оптимизация для магии алгебра и реализация

Альтернативы перезаписи


В приведенном перезаписанном запросе фильтрующее множество содержит все большие отделы, в которых работают молодые сотрудники. Это фильтрующее множество является наиболее ограничительным из всех возможных. Можно использовать менее ограничительное фильтрующее множество. Фильтрующее множество может содержать все большие отделы или все отделы с молодыми сотрудниками. В каждом из этих случаев перезаписанные запросы будут отличаться от запроса, представленного на рис. 2, но они будут иметь похожую общую структуру и будут производить одни и те же результаты. В то время как эти варианты могут приводить к большему числу вычислений внутри представления, они могут быть дешевле в целом (поскольку будут более дешево вычисляться таблицы PartialResult или Filter). В общем случае имеется много способов создания фильтрующего множества, каждый из которых соответствует некоторому подмножеству множества таблиц, указанных в разделе FROM табличного выражения представления PartialResult. Если все отделы являются большими и включают молодых служащих, перезаписанные запросы не обеспечат никаких преимуществ перед исходным запросом, и их выполнение может даже оказаться более дорогостоящим. Наконец, если имеется несколько атрибутов соединения, то требуется принять решение о том, все ли атрибуты соединения будут вносить вклад в фильтрующее множество, или же будут использоваться только некоторые атрибуты. Однако в подавляющем большинстве запросов имеется в точности один атрибут соединения, так что обычно этот аспект не является важным.

Конкретная комбинация результатов выбора по отношению к вычислению фильтрующего множества называется «стратегией сторонней передачи информации» («sideways information passing strategy, SIPS), названный так по той причине, что фильтрующее множество передает атрибуты соединения в определение представления «сторонним образом». Одна из SIPS приводит к наилучшему плану выполнения запроса. Однако это зависит от таблиц и предикатов, участвующих в запросе, и характеристик среды выполнения.
В настоящее время отсутствует какое- либо практическое решение для выбора SIPS в оценочном стиле. Вместо этого, существующие системы, выполняющие перезапись на основе магических множеств, придерживаются одного из двух подходов:

  • Использовать перезапись на основе магических множеств с SIPS по умолчанию (обычно «слева-направо» и разрешать пользователю указывать другие SIPS или блокировать перезапись на основе магических множеств. Этот подход используется в CORAL [RSSS94].
  • Одновременно оптимизировать запрос с перезаписью на основе магических множеств и без нее и выбирать самый дешевый план. Для перезаписи на основе магических множеств выбирать SIPS на основе некоторой эвристики. Этот подход используется в Starburst [MP94]. Выбираемая SIPS «соответствует» порядку соединений, который происходит из оптимизации исходного запроса без магической перезаписи. Для этой эвристики не было представлено никакого оценочного обоснования, нет и никакой гарантии, что выбирается хороший план. На самом деле, как мы покажем в разд. 6, эта эвристика может приводить к плохому выбору. Однако, поскольку исходный запрос также независимо оптимизируется, можно гарантировать, что перезапись на основе магических множеств не приведет к ухудшению производительности.



    Рис. 3. Архитектура оптимизации


    Содержание раздела