Роль оптимизатора базы данным

Оценить
(0 голоса)
Большинство систем баз данных предоставляют способы показа планов запросов, хотя понимание планов может оказаться чересчур сложной задачей, если вы не имеете представления о функционировании оптимизатора и не знаете, как интерпретировать связанный с ним жаргон. В этой главе делается попытка объяснения оптимизации запросов путем анализа функционирования оптимизаторов запросов, используемых ими методов и влияющих на них факторов. Под занавес главы мы вкратце рассмотрим различные технологии, используемые для сокращения объема работы оптимизаторов запросов. Оптимизаторы запросов Роль оптимизатора запросов заключается в определении наиболее эффективного способа получения и обработки данных, необходимых для удовлетворения запроса. Подход, используемый оптимиза тором, именуется по-разному: QP (query plan n.wu запроса),…
Оценить
(0 голоса)
Прежде чем выполнять SQL-запросы, необходимо произвести их компиляцию. Полный цикл жизни запроса является многоэтапным процессом, включающим следующие шаги: •             Синтаксический анализ операторов SQL. При нахождении синтаксических ошибок выдается соответствующее сообщение и происходит прерывание запроса; если ни одной ошибки не обнаружено, запрос транслируется во внутреннюю форму, приемлемую для оптимизатора. •             Семантическое расширение. Запрос может включать просмотр или "намекать" на ограничение ссылочной целостности, или триггер; в расчет должна быть принята каждая семантическая импликация (логическая операция). •             Оптимизация запроса. Для запроса должен быть выбран наиболее эффективный план доступа. Оптимизация также может включать перезапись запроса в функционально эквивалентную, но более эффективную форму. •             Генерация…
Оценить
(0 голоса)
На оптимизацию запроса негативно влияет множество факторов, но эффективные оптимизаторы запросов должны их учитывать при выборе наилучшего плана запроса. Не принимая во внимание очевидное влияние аппаратных средств, таких как количество и производительность ЦП и дисков, на производительность запроса, в следующем списке отражены некоторые из важных факторов: •             Том данных. Чем большее количество данных предполагается для обработки, тем более важным становится план запроса, поскольку неэффективность может существенно увеличить время выполнения запросов. Плохой план запроса может на порядок увеличить время выполнения запроса. Некоторые из факторов, рассматриваемых оптимизатором, включают общее количество страниц в таблице, количество страниц таблицы, включающих строки, количество страниц-лис-тьев в индексе,…
Оценить
(0 голоса)
Когда оп тимизатор выбирает план запроса, он учитывает доступные для этого методы. Он должен определить, как осуществить доступ к таблице, порядок, в котором следует объединять данные из таблиц, методы, используемые для выполнения объединения. В этом разделе мы рассмотрим каждый из этих альтернативных вариантов. Обратите внимание на то, что оптимизаторы могут также учитывать местоположение данных, особенно в средах, не предусматривающих совместное использование. Например, могут ли объединения быть выполнены локально (близкие объединения) или данные необходимо перемещать между узлами? Вопросы, связанные с сосредоточенными в одном месте объединениями и перемещением данных, обсуждаются в главе 4.
Оценить
(0 голоса)
Простым способом получения информации из таблицы является полное чтение ее данных. Эта операция называется table scan - сканирование таблицы. Предположим, например, что вам необходимо извлечь из таблицы "Служащие" фамилии всех служащих старше 70 лет. На первый взгляд сканирование таблицы кажется целесообразным. Однако, если вам необходимо найти служащих старше 70 лет, то большинство строк будет отброшено. Этот пример более всего подходит для запросов к хранилищам данных; сканирование таблиц чаще всего используется в средах DSS. Сканирования любых таблиц, кроме очень маленьких, редко применяются в средах OLTP и, с точки зрения производительности, обычно непригодны. Поскольку для большинства транзакций необходимо только небольшое количество строк…
Оценить
(0 голоса)
При определении порядка объединения данных из многочисленных таблиц оптимизаторы должны выбрать стратегию оценки альтернативных соединений. Наиболее быстрая стратегия (называемая иногда greedy join enumeration - перечисление поглощающих объединений) производит упрощения, поэтому может оказаться вполне умеренной в расходовании пространства и времени. Однако и эта стратегия может упустить наилучший план. Более охватывающая стратегия (называемая иногда dynamic join enumeration - перечисление динамических объединений) является исчерпывающей в своем поиске наилучшего плана. Однако эта стратегия может занять много времени в случае сложных слияний, что вызвано большим количеством потенциальных планов. Оптимизаторы запросов могут также выбрать одну из трех стратегий объединения данных из таблиц: left-deep (углубленного влево дерева),…
Оценить
(0 голоса)
Когда оптимизатор определяет порядок, в котором будет производиться объединение содержимого таблиц, заключительным этапом является определение методов, которые будут использованы в каждом конкретном случае. К главным методам относятся декартовы объединения, объединения вложенного цикла, объединения посредством слняния-сортировки, хэш-объединения. Используются также и новые методы объединения, включая звездообразную схему. Декартовы объединения Самым простым методом является декартово объединение, которое необходимо использовать в том случае, если не определен ни один предикат объединения. Вообще говоря, декартово объединение не является методом объединения: декартовы объединения могут быть выполнены с помощью объединений вложенного цикла или даже посредством метода слияния-сортировки (оба описаны далее). Для иллюстрации декартова объединения на рисунке 8.3 представлены…
Оценить
(0 голоса)
Являются более эффективным методом объединения. Оптимизатор выбирает внешнюю таблицу, доступ к которой производится в первую очередь и которая является меньшей из двух таблиц, и внутреннюю таблицу, обращение к которой осуществляется позже. Приводимый запрос может быть обработан посредством объединения вложенного цикла благодаря присутствию предиката объединения (определен в предложении where): При объединении вложенного цикла внутренняя таблица сканируется всякий раз для каждой строки внешней таблицы. Если меньшая таблица под названием Region выбрана в качестве внешней, то будут просмотрены все строки внутренней таблицы Sales для нахождения соответствия первому региону - Арктике. Если какие-либо строки совпадают, то они будут объединены. Далее будут объединены все строки…
Оценить
(0 голоса)
При таких объединениях производится сканирование строк каждой таблицы, при этом исключаются строки, не удовлетворяющие предикативным ограничениям, а после этого выполняется сортировка каждого искомого набора соединяемых столбцов перед их слиянием. Соответственно, конечный результат может быть получен только при одном прохождении внутренней таблицы. Следующий запрос может послужить примером объединения посредством слияния-сортировки: select г.region, product, qtysold, salesrep from region r, sales s where r.region = s.region order by r.region; Конечный результат может быть отсортирован по ключу объединения, region. Объединение путем слияния-сортировки предоставит результаты в порядке обработки исходной последовательности через слияние-сортировку. При возрастании томов данных такие алгоритмы объединения становятся все более дорогостоящими из-за издержек…
Оценить
(0 голоса)
Несмотря на то, что в некоторых оптимизаторах запросов хэш-объединепия представлены после других методов, они все же довольно часто выбираются именно благодаря своей эффективности. Хэш-объединения сохраняют строки внешней таблицы, удовлетворяющие любым предикативным ограничениям хэш-таблицы, используя для определения местоположения хэш-функцию. После этого каждая строка из внутренней таблицы, удовлетворяющая всем ее предикатам, хэшируется этой же функцией хэширования и объединяется с любыми совпавшими строками, обнаруженными в хэш-таблице. Для построения хэш-таблицы обычно выбирается наименьшая таблица и в случае достаточного количества доступной памяти вся хэш-таблица вполне может разместиться в ней, что приносит значительные преимущества по части времени обработки. Как и в варианте объединения с использованием алгоритма…
«ПерваяПредыдущая12СледующаяПоследняя»
Навигация