и нерешенных проблем можно найти
оптимизации запросов, который использовался в реляционных
системах: формируется набор альтернативных планов, оценивается
стоимость каждого из них и выбирается план с наименьшей
стоимостью. (Подробный обзор современных методов оптимизации
запросов в реляционных СУБД и нерешенных проблем можно найти в
.) Возможность применения такого подхода в СУБД ORION и
O2 (да и в других) опирается на то, что объекты в этих
системах не полностью инкапсулированы. Наряду с методами, в
объектах видны и некоторые атрибуты, и если условие выборки
задано через эти атрибуты, оптимизатор запросов, которому
известны внутренняя структура объектов и набор существующих
индексов, получает возможность выбора. Если же условие выборки
можно формулировать только через методы, при подходах ORION и
O2 единственным возможным способом выборки объектов класса
будет последовательный просмотр всех объектов этого класса.
Здоник отмечает, что основная проблема с оптимизацией
запросов к ООБД связана с расширяемостью набора типов в такой
БД. Каждый новый тип вводит собственную алгебру, неизвестную
оптимизатору запросов. Например, оптимизатор не имеет
информации о возможной коммутативности двух операций типа и
т.д. Здоник полагает, что возможному решению проблемы
оптимизации могло бы способствовать формальное определение
алгебраических свойств операций типа при его разработке.
Примерно такой подход применяется в оптимизаторах, основанных
на наборе правил, применяемых в расширяемых СУБД (например,
).
Как кажется, из последних публикаций, затрагивающих проблемы
оптимизации запросов, наибольшее влияние на оптимизаторы
систем ООБД может оказать . Эта работа не связана
непосредственно со спецификой ООБД, но преимущество
предлагаемого подхода связано как раз с максимальной
независимостью от особенностей организации БД. Предлагается не
оценивать план выполнения запроса, а учитывать реальную
стоимость уже использованного плана и на этой основе изменять
критерии выбора оптимизатора.
Содержание Назад Вперед