Факторы, негативно влияющие на оптимизацию запроса

Оценить
(0 голоса)

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

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

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

•             Отбор данных. Если предикат запроса ограничивает данные, требуемые из таблицы (например, правило where в предложении select name from customer where balance owed >= credit_limit), то оптимизатору необходимо некоторое представление, относящееся к определению пропорции строк в таблице, которые будут исключены предикатом. Это явление называется селективностью. Высокая селективность означает возврат меньшего количества строк (то есть, предикат в высшей степени селективен); низкая селективность - возврат большего количества строк. В многотабличных объединениях селективность помогает оптимизатору в определении таблиц, которые являются первыми кандидатами на слияние, поскольку для последующих объединений лучше передавать меньшее количество строк.

•             Доступная память. Доступная память влияет на план, выбираемый оптимизатором запроса. Должны быть учтены как память в буферном кэше совместного использования, так и локальная память, доступная для сортировки и хэш-объединений.

•             Степень параллелизма. Там, где поддерживаются параллельные запросы, оптимизатор запросов должен учитывать указанную степень параллелизма при назначении запросу количества потоков или процессов. Точно также и параллелизм деятельности дисков зависит от количества операций ввода/вывода в секунду и производительности дисковой иодсистемы, поддерживаемой ее шпинделями.

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

•             Количество конкурирующих пользователей. Память, доступная запросу, зависит от количества одновременно выполняемых пользовательских запросов. Там, где поддерживаются параллельные запросы, количество конкурирующих пользователей влияет на степень параллелизма, который может быть эффективно применен к центральным процессорам и дисковому вводу/выводу.

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

•             Отклонение данных. Статистические данные столбцов приходят на помощь при обнаружении data skew - отклонения данных. Это явление встречается, когда некоторые значения фигурируют чаще других, что приводит к неоднородному, или перекошенному, распределению. Например, последние фамилии телефонной книги Сан-Франциско явно свидетельствуют об отклонении; в ней присутствует множество фамилий Smith и Higginbotham. Розничные продажи также стремятся к отклонению: они интенсивнее в декабре, чем в феврале. Для определения отклонения данных полезны гистограммы.

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

•             Параметры конфигурации, определяемые СУБД. К ним относятся, например, размеры рабочих областей сортировки и хэширования, степень параллелизма.

Методы оптимизации
Доступ к таблице
Порядок объединения таблиц
Методы объединения
Объединения вложенного цикла

Добавить комментарий


Защитный код
Обновить