Методы оптимизации выполнения запросов в реляционных СУБД

Глобальные оптимизации в реляционных системах управления базами данных


Рассматриваемые до сих пор оптимизационные преобразования запросов, улучшенные структуры хранения реляционных данных и стратегии выполнения реляционных операций были направлены на повышение эффективности отдельных запросов к базе данных. Существует другая постановка задачи оптимизации, когда преследуется цель повышения эффективности смеси запросов. Соответствующие оптимизационные приемы относятся к \2глобальной\1 оптимизации физических управляющих структур баз данных и планов выполнения заданного набора запросов.

Имеется два направления глобальной оптимизации, не являющихся взаимно исключающими. Первое направление можно назвать \2статистической глобальной оптимизацией\1. Цель такой оптимизации - автоматическое (или автоматизированное) поддержание в базе данных на основании статистической информации набора управляющих структур, позволяющего эффективно выполнять запросы из имеющегося потока запросов. Фактически, это означает улучшение физической структуры базы данных относительно текущего потока запросов. Этот подход не предполагает априорных знаний о специфике смеси запросов, поскольку основывается только на статистике. Предполагается, что свойства запросов в потоке обладают инерционностью, т.е. на основе информации об уже выполненных запросах можно делать оценивать свойства будущих запросов. На практике это предположение, как правило, подтверждается.

Второе направление в последнее время обычно называют \2оптимизацией набора запросов\1. Соответствующие оптимизации расчитаны на то, что система получает запросы не по одному, а целыми наборами. Эта ситуация невозможна в традиционных реляционных СУБД, интерфейсы которых предполагают поочередное выполнение запросов, но становится жизненной в более сложных системах, использующих СУБД в качестве средства поддержки. К таким системам относятся системы дедуктивных баз данных, системы логического программирования и т.д. Их объединяет то свойство, что наряду с базами данных в них хранятся наборы правил логического вывода, позволяющие порождать новые данные (факты) на основе фактов, хранимых в базе данных.
Запрос, поступающий в такую систему, преобразуется в набор запросов традиционного интерфейса СУБД. Все запросы, составляющие набор, могут быть предоставлены СУБД одновременно и, соответственно, могут обрабатываться совместно. Основным действием при оптимизации набора запросов является выработка \2глобального\1 оптимального плана выполнения запросов этого набора. Основой оптимизации является выявление общих подвыражений, входящих в разные запросы одного набора. Как мы уже отмечали, эти два подхода не являются взаимно исключающими. Можно представить систему, в которой осуществляется оптимизация наборов запросов и одновременно производится улучшение физической структуры базы данных на основе статистической информации о потоке наборов запросов. С другой стороны, при оптимизации набора запросов, вообще говоря, можно учитывать возможности порождения временных управляющих структур (например, индексов) на время выполнения данного набора запросов. | |


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