Оптимизатор. Начальные понятия. Часть 1

dbstalker, 07 июля

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

Язык запросов SQL, с помощью которого пользователь работает с данными, размещенными в реляционных СУБД, является декларативным. Это значит, что, формулируя SQL-запрос, нам достаточно указать только, какими свойствами должны обладать требуемые данные, но мы не даем никаких указаний системе о том, как она должна выполнить наш запрос. За сам процесс получения данных отвечает непосредственно СУБД. То есть СУБД должна решить задачу, как по декларативной формулировке нашего запроса создать такую программу (план) выполнения запроса, чтобы ее выполнение было максимально эффективно и, конечно же, она должна выдавать данные, удовлетворяющие заданным условиям.

Условно эта задача разбивается на два этапа:

  • построить все возможные программы, результаты которых соответствуют указанным свойствам
  • выбрать из этого множества программ такую программу, выполнение которой было бы наиболее эффективным.

Таким образом, существует множество планов выполнения запросов в зависимости от методов и путей доступа непосредственно к данным, порядка и способов соединения таблиц. Из этого множества нужно выбрать оптимальный план. Именно этим и занимается оптимизатор запросов.

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

Рассмотрим теперь непосредственно этапы процесса прохождения запроса через сервер Оракла:

  1. SQL-запрос на сервере сначала подвергается лексическому и синтаксическому разбору, формируется его внутреннее представление, в котором содержится структура запроса, характеристики используемых объектов базы данных.
  2. Внутреннее представление подвергается преобразованиям - логической оптимизации. Преобразования могут быть эквивалентными (преобразованное внутреннее представление семантически эквивалентно изначальному) и семантическими ( преобразованное внутренне представление не является семантически эквивалентным изначальному, но гарантируется, что результат выполнения будет совпадать с результатом первоначального запроса).
  3. В соответствии с полученным внутренним представлением происходит выбор из набора альтернативных планов выполнения данного запроса. Для каждого плана оценивается предполагаемая стоимость выполнения запроса. При оценках используется статистическая информация о состоянии базы данных. Выбирается самый «дешевый» план выполнения.
  4. По внутреннему представлению наиболее оптимального плана выполнения запроса формируется выполняемое представление плана.
  5. Происходит его реальное выполнение запроса.

Продолжение следует.

 

Новый комментарий

Я не спамер: введите суму 8+6



 

От авторов блога

О Блоге - прочитай перед началом.

Задать вопрос и получить ответ - уже решено 94 вопросов

Глоссарий - список терминов и сокращений


 
 

Бизнес форум

Последние темы:

Печь булерьян в дом
21 сентября, 1 ответа
Как Открыть Футбольную Школу
20 сентября, 1 ответа
IP телефония
20 сентября, 1 ответа