Главная » SQL, Базы данных » Оптимизация

0

Для реляционных систем оптимизация представляет собой как  проблему, так   и   благоприятную   возможность.   Проблема   состоит   в   том,   что   для достижения приемлемого уровня производительности оптимизация в подобных системах просто необходима. Причем одной из сильных сторон и несомненных достоинств  реляционного  подхода  является  то,  что  реляционные  выражения реализуются и оптимизируются на достаточно высоком семантическом уровне. В    противоположность   этому,   в   нереляционных   системах,   где    запросы пользователей  выражаются  на  более  низком  семантическом  уровне,  любая "оптимизация"  должна  выполняться  самим   пользователем  вручную  (здесь термин "оптимизация" взят в кавычки, поскольку обычно он употребляется для обозначения автоматической, а не ручной оптимизации). В подобных системах пользователь   (а   не   система)   определяет,   какие   именно   низкоуровневые операции  должны  быть  выполнены  и  в  какой  последовательности.  И  если пользователь принял неправильное решение, то система не способна исправить положение. Отметим также, что для работы в подобных системах пользователь должен  обладать  некоторыми  навыками  в  программировании,  иначе  он  не сможет достаточно полно применять средства этих систем.

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

1.  Хороший оптимизатор обладает большим объемом полезной информации, кото рая для пользователя обычно недоступна. Говоря конкретнее, оптимизатор владе ет определенными статистическими данными (в частности о кардинальности пе ременных отношения и т.д.), в том числе следующими:

■     количество различных значений каждого типа;

■     текущее количество кортежей в каждой базовой переменной отношения;

■     текущее количество различающихся значений для каждого атрибута в каждой базовой переменной отношения;

■     количество вхождений каждого значения в каждом из атрибутов и т.п.

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

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

3.  Оптимизатор — это программа, которая по определению "всегда доводит начатую работу до конца", в отличие от человека. Оптимизатор способен рассматривать буквально сотни различных стратегий реализации конкретного запроса, в то время как программист едва ли проанализирует более трех-четырех возможных страте гий (по крайней мере, достаточно глубоко).

4.  В оптимизаторе реализованы знания и опыт лучших из лучших программистов, в результате чего эти знания и опыт становятся доступными для всех. Это позволяет применять ограниченный  набор ресурсов,  предоставленный  широкому кругу пользователей, наиболее эффективно и экономично.

Приведенные выше соображения служат убедительным доказательством сделанного в начале данного раздела заявления о том, что оптимизируемость (т.е. возможность оптимизации запросов) является сильной стороной реляционных систем.

Общее назначение оптимизатора состоит в выборе наиболее эффективной стратегии вычисления реляционного выражения. В этой главе описаны некоторые фундаментальные

принципы и методы, применяемые в процессе оптимизации. После обсуждения вступительного примера, приведенного в разделе 18.2, в разделе 18.3 предложен обзор принципов работы оптимизатора. Затем в разделе 18.4 обсуждается один из важнейших аспектов процедуры оптимизации — преобразование выражений (или перезапись запроса). Далее в разделе  18.5  кратко  излагается  вопрос  о  статистических  показателях  базы  данных.  В разделе 18.6 дается более  подробное  описание одного из конкретных методов оптимизации, известного как декомпозиция запросов. Затем в разделе 18.7 обсуждается вопрос о том, как в действительности реализуются некоторые реляционные операторы (например оператор соединения и др.), и кратко описывается использование рассматривавшихся в разделе 18.5 статистических показателей для вычисления стоимостных оценок. Наконец, в разделе 18.8 приводится краткое резюме по всему материалу данной главы.

Еще одно вводное замечание. Достаточно часто данную тему связывают с оптимизацией запросов. Однако подобный термин несколько неточен, поскольку  выражение, которое нужно оптимизировать (запрос), на самом деле может формироваться в контексте, отличном от интерактивной выборки информации из базы данных. В частности, оно может быть частью операции обновления, а не операции выборки, понимаемой под запросом. Более того, сам по себе термин оптимизация является несколько преувеличенным, так как обычно не существует гарантий, что выбранная стратегия реализации действительно оптимальна в некотором объективном смысле. На практике под оптимизированной стратегией реализации обычно понимается просто улучшенный вариант исходного неоптимизированного выражения. (Тем не менее, в некоторых немногочисленных случаях можно вполне обоснованно утверждать, что выбранная стратегия реализации  будет действительно оптимальной в определенном смысле [18.30]. См. также приложение А.)

Источник: Дейт К. Дж., Введение в системы баз данных, 8-е издание.: Пер. с англ. — М.: Издательский дом «Вильямс», 2005. — 1328 с.: ил. — Парал. тит. англ.

По теме:

  • Комментарии