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

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование

Федеральное агентство образования РФ

Государственное образовательное учреждение

Высшего профессионального образования

Владимирский государственный университет

Кафедра вычислительной техники

 

 

 

 

 

 

Пояснительная записка

к курсовой работе

дисциплина

Распределённые СУБД

 

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

 

 

Выполнил

ст. гр. ИВТ - 102

Голубев Михаил

Принял

Трофимов М. А.

 

 

 

 

Владимир 2006г.

В данной курсовой работе рассмотрены следующие вопросы: цели оптимизации запросов, проблемы оптимизации, возможности оптимизации, рассмотрены примеры оптимизации отдельных запросов на примере Oracle 9.2. В ходе работы были проведены исследования по оптимизации планов выполнения запросов за счёт нормализации таблиц, выбора табличного пространства и распределения таблиц по этому пространству.

 

Введение

 

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

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

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

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

 

1. Проблемы оптимизации запросов

 

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

 

1.1Запросы

 

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

1.2Цели оптимизации

 

Экономический принцип требует, чтобы процедуры оптимизации пытались либо максимизировать пропускную способность при заданном числе ресурсов, либо минимизировать потребление ресурсов при данной пропускной способности. Эта общая цель допускает ряд различных опе