Развитие идей и приложений реляционной СУБД System R


Оптимизация в System R


Мы сочли необходимым посвятить отдельный подраздел вопросам оптимизации, производимой в System R при компиляции запросов, по причине исключительной важности оптимизационных действий в реляционных СУБД вообще и в System R в частности. Только при наличии развитых оптимизаторов реляционные системы могут достичь приемлемого уровня эффективности.

Вообще с оптимизацией в реляционных системах связан очень широкий спектр проблем, которые мы более последовательно и полно рассмотриваем в отдельной статье [75]. Здесь же мы коротко рассмотрим особенности оптимизации в System R.

Прежде всего отметим, что судя по публикациям в System R применяется достаточно ограниченный набор оптимизационных приемов. Оптимизация главным образом сводится к выбору на основе стоимостных оценок наиболее эффективного способа выполнения компилируемого запроса. В этой постановке задача оптимизации включает два основных компонента: компонент выработки набора способов выполнения запросов и компонент оценки стоимости способа. Очень существенным моментом является обеспечение независимости этих компонентов: важно уметь расширять возможности компилятора за счет ввода новых возможных способов, не затрагивая компонент оценок. Как кажется, подход System R обладает этим свойством декомпозиции компонентов оптимизатора, и может быть поэтому ни в одной публикации не приводится полный перечень применяемых способов выполнения запросов - они меняются от версии к версии. Тем не менее мы постараемся привести обзор наиболее важных способов выполнения запросов на основе всех доступных публикаций.

При выполнении запроса на выборку из одного отношения концептуально необходимо просмотреть все кортежи указанного в запросе отношения и выбрать из них те, содержимое полей которых удовлетворяет условиям выборки. Возможны два способа выполнения такого просмотра: последовательное сканирование всего отношения или его сканирование через один из определенных на этом отношении индексов. Соответственно, среди кандидатов на оптимальный способ выполнения такого запроса потенциально находятся способ последовательного сканирования и набор способов сканирования на основе всех существующих индексов.




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