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

         

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


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

В этой работе мы не сможем привести полный анализ проблем оптимизации запросов и структур данных и стратегий выполнения реляционных операций во всем спектре распределенных систем баз данных. В этом мы ограничены и объемом данной статьи, и сложностью задачи. Тем не менее, основные особенности оптимизации в некотором широком классе распределенных систем баз данных мы постараемся рассмотреть. К этому классу мы отнесем распределенные системы управления базами данных, основанные на однородных локальных системах управления базами данных. Такой системой является, например, распределенная СУБД System R* [93].

Дополнительным требованием в System R*, довольно естественным, как нам кажется, для систем этого класса, является требование локальной автономности узлов сети, на которых выполняются локальные представители СУБД (незначительно модифицированная System R). Это требование означает отсутствие централизованного администрирования глобальной базой данных, отсутствие централизованного каталога базы данных и т.д. Должно допускаться локальное порождение и удаление новых отношений и индексов в локальной базе данных, причем уничтожение индекса не должно приводить к невозможности повторного выполнения ранее откомпилированных глобальных запросов. Требование локальной автономности существенно влияет и на допустимые способы оптимизации глобальных запросов (здесь и далее под глобальным запросом мы понимаем запрос, для выполнения которого требуется сетевой доступ к удаленным локальным базам данных).
Заметим, что логические уровни оптимизации запросов, включая семантическую оптимизацию, фактически, не связаны с распределенной или локальной природой баз данных (не считая некоторой специфики обработки запросов через представления). Распределенный характер баз данных затрагивает главным образом "физические" уровни оптимизации, связанные с выбором и оценкой планов выполнения запроса. Другая проблема распределенных систем баз данных касается алгоритмов выполнения двуместных реляционных операций над отношениями, хранящимися в разных узлах распределенной системы. Эта проблема существует и при традиционном хранении каждого отношения целиком в одной локальной базе данных, но становится еще более сложной и допускающей большее число решений в случае так называемых разделенных (partitioned) и раскопированных (replicated) баз данных. Такие нетрадиционные организации распределенных баз данных очень активно обсуждаются в литературе, хотя нам неизвестна какая-либо завершенная система, построенная на этих принципах. (В свое время в начальном проекте System R* предполагалось использование таких организаций, но ни одна из них не была практически реализована). | |


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