Automatic SQL Tuning тесно связана с оптимизатором запросов. Это дает несколько преимуществ:
- настройка осуществляется системным компонентом, который, в конечном счете, ответственен за план выполнения и, следовательно, за SQL-производительность,
- процесс настройки полностью основывается на стоимости, и это, естественно, учитывает любые изменения и расширения, сделанные в оптимизаторе запросов,
- процесс настройки принимает во внимание прошлую статистику выполнения SQL-предложений и настраивает параметры настройки оптимизатора для того или иного предложения, и
- собирает вспомогательную информацию вместе с правильной статистикой, основанной на том, что считает полезным оптимизатор запросов.
Фактически Automatic SQL Tuning основана на усовершенствованной версии оптимизатора запросов. Обычный оптимизатор запросов был усовершенствован в Oracle 10g для выполнения дополнительного анализа перед процессом построения плана выполнения SQL-предложения. Мы будем называть такое состояние оптимизатора запросов, как Automatic Tuning Optimizer, для того, чтобы отличать это состояние от стандартного. Оптимизатор запросов (в обычном состоянии) имеет строгие ограничения на время и системные ресурсы, которые он может использовать для поиска наилучшего плана выполнения заданного SQL-предложения. Приемлемое время оптимизации обычно меньше секунды и не больше, чем несколько секунд. Из-за этого строгого требования оптимизатор может выполнять лишь ограниченный план поиска, используя эвристику тогда и только тогда, когда это может сократить время на оптимизацию. Следовательно, оптимизатор запросов не может выполнить трудоемкий анализ и этапы проверки перед процессом генерации плана.
Напротив, выполнение Automatic Tuning Optimizer обычно занимает намного больше времени, обычно несколько минут для того чтобы выполнить необходимые исследования и этапы проверки, как части процесса настройки. Таким образом, Automatic Tuning Optimizer имеет гораздо более высокую вероятность сгенерировать хорошо отлаженный план. Automatic Tuning Optimizer использует динамический отбор и частичное выполнение (то есть, выполнение фрагментов SQL-предложений), для проверки собственной оценки стоимости, избирательности и кардинального числа (cardinality). Он также использует предысторию выполнения SQL-предложений для определения оптимальных параметров настройки (например, режима оптимизатора).
Функциональные возможности Automatic Tuning Optimizer реализуются при помощи советчика SQL Tuning Advisor. SQL Tuning Advisor принимает SQL-предложение и передает его наряду с другими входными параметрами в Automatic Tuning Optimizer. Потом Automatic Tuning Optimizer выполняет четыре типа анализа в процессе генерации плана.
Функциональные возможности Automatic Tuning Optimizer доступны через советчика, названного SQL Tuning Advisor. SQL Tuning Advisor принимает SQL-предложение и передает его наряду с другими входными параметрами в Automatic Tuning Optimizer. Потом Automatic Tuning Optimizer выполняет четыре типа анализа в процессе генерации плана.
- Statistics Analysis (Статистический Анализ): Automatic Tuning Optimizer проверяет каждый объект запроса на пропущенные или устаревшие данные статистики и дает рекомендации для сбора соответствующей (relevant) статистики. Он также собирает вспомогательную информацию для поставки отсутствующей или исправления устаревшей статистики в случае, если не выполнены рекомендации.
- SQL Profiling (Профилирвание SQL ): Automatic Tuning Optimizer проверяет собственные оценки и собирает вспомогательную информацию, чтобы удалить ошибочные оценки. Он также собирает вспомогательную информацию в форме самоопределяемых параметров настройки оптимизатора (например, по первым строкам, а не по всем строкам - first rows vs. all rows), основанных на прошлой истории выполнения SQL-предложений. Он формирует SQL Profile, используя вспомогательную информацию, и дает рекомендации для его создания. Когда SQL Profile уже создан, он задействует оптимизатор запросов (в обычном состоянии) для генерации хорошо отлаженного плана.
- Access Path Analysis (Анализ путей доступа): Automatic Tuning Optimizer выявляет, какие новые индексы могут быть использованы для улучшения доступа к каждой таблице в запросе и затем делает соответствующие рекомендации для их создания.
- SQL Structure Analysis (Анализ SQL-структуры): в этом случае Automatic Tuning Optimizer пытается идентифицировать SQL-предложения, планы которых определяются как неудачные, и советует, как их реструктурировать. Предложения по изменениям SQL- кода могут относиться как к синтаксису, так и к семантике.
Каждый тип анализа детально рассмотрен в следующей главе “”.
Результаты (outputs), сгенерированные Automatic Tuning Optimizer, передаются пользователю через SQL Tuning Advisor в виде совета (advice). Совет состоит из одной или нескольких рекомендаций, каждая из которых снабжается объяснением и оценкой выгоды при осуществлении. Пользователю предоставляется возможность принятия совета, и, таким образом, настройка соответствующего SQL-предложения завершается.
Automatic Tuning Optimizer вместе с SQL Tuning Advisor составляют компонент Automatic SQL Tuning сервера Oracle. Архитектура Automatic SQL Tuning, как показано на рисунке 3, иллюстрирует функциональные отношения между Automatic Tuning Optimizer и SQL Tuning Advisor.
Automatic SQL Tuning является частью продвигаемой Oracle стратегии перехода на управляемую по советам модель администрирования баз данных. Модель предполагает, что для критических функций управления базой данных сервер базы данных должен дать полезный совет пользователям о том, как лучше пользоваться ими. Механизм самой базы данных теперь сделан более интеллектуальным, чтобы пользователи Oracle для управления своими базами данных наиболее оптимальным способом больше не полагались на сторонние инструменты и решения.
Рисунок 3. Архитектура опции Automatic SQL Tuning
Содержание раздела