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


Статистическая глобальная оптимизация


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

Поэтому в таких системах автоматическое изменение, например, структуры хранения отношения недопустимо. Можно допустить только наличие автоматизированных подсказок администратору базы данных о желательности таких радикальных перемен.

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

Примером компонента СУБД, поддерживающего оптимальный набор индексов в реляционной базе данных, может служить средство DBDSGN [119], разработанное в рамках СУБД System R. (Как отмечается в [119], на основе этого средства впоследствии был создан коммерческий продукт RDT, используемый в коммерчески доступных СУБД фирмы IBM SQL/DS и DB2.)




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