Инструмент SQL Tuning Advisor для оптимизации медленного кода SQL

SQL Tuning Advisor поможет оптимизировать операторы SQL в базе данных OracleИнструмент SQL Tuning Advisor (Советник по настройке SQL-кода) можно использовать для улучшения плохо работающих SQL-операторов. Для оказания помощи в настройке неудачных SQL-операторов этот инструмент предлагает следующее:

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

 

Применение SQL Tuning Advisor

SQL Tuning Advisor использует перечисленные ниже источники.

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

SQL Tuning Advisor может настраивать наборы SQL-операторов, называемые наборами настроек SQL (SQL Tuning Sets — STS). Каждый такой набор включает в себя ряд SQL-операторов вместе с информацией об их выполнении, в том числе и о том, сколько в среднем времени на него затрачивается (elapsed time). Преимущество STS-наборов состоит в том, что они позволяют захватывать информацию о рабочей нагрузке базы данных, а также производить настройку нескольких больших SQL-операторов одновременно.

 

Как работает SQL Tuning Advisor

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

Однако оптимизатор можно запускать и в так называемом режиме настройки (tuning mode), предполагающем выполнение оптимизатором более глубокого анализа для вычисления способов оптимизации планов выполнения. В этом режиме оптимизатор может тратить несколько минут и выдавать не наилучший план выполнения SQL, а рекомендации. Администратор баз данных, свою очередь, далее может сам использовать эти рекомендации для оптимизации планов выполнения SQL-операторов. Дополнительное преимущество состоит в том, что в этом режиме он также получает детали по стоящим за предлагаемыми оптимизатором рекомендациями причинам и тому, какую выгоду принесет их реализация. Оптимизатор Oracle, работающий в режиме настройки, называется оптимизатором по автоматической настройке (Automatic Tuning Optimizer — ATO); он выполняет следующие задачи:

  • анализирует статистические данные;
  • профилирует SQL;
  • анализирует пути доступа;
  • анализирует структуру SQL.

Каждая из этих задач более подробно рассматривается в последующих разделах вместе с видами рекомендаций, которые выдает SQL Tuning Advisor.

 

Анализ статистических данных

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

 

Профилирование SQL

На этом этапе ATO пытается проверять достоверность своих оценок касательно коэффициентов наподобие степени избирательности столбцов и количества объектов
базы данных. Для осуществления этой проверки ATO может использовать три следующих метода.

  • Процесс динамической выборки данных (dynamic data sampling). ATO может использовать для проверки своих оценок процесс выборки данных и применять
    поправочные коэффициенты в случае, если его результаты показывают, что эти оценки являются существенно неправильными.
  • Частичное выполнение (partial execution). ATO может осуществлять частичное выполнение SQL-оператора. Этот процесс позволяет ATO проверять, являются ли его оценки близкими к тому, что происходит на самом деле. Правильность оценок в таком случае не проверяется, вместо этого скорее проверяется то, является ли план, полученный на их основании, наилучшим из возможных.
  • Статистические хронологические данные по предыдущим выполнениям (past execution history statistics). Для помощи в своей работе ATO может использовать хронологию выполнений SQL-оператора.

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

В случае принятия этого предложения и работы оптимизатора в режиме настройки, Oracle сохраняет профиль SQL в словаре данных. После этого оптимизатор начинает использовать этот профиль для получения оптимальных планов выполнения всегда, даже тогда, когда запускается в обычном режиме.


Совет. Следует запомнить, что профиль SQL и хранимый план выполнения — это не одно и то же.


Созданный SQL-профиль будет продолжать применяться при внесении любых небольших изменений в базу данных и позволении объектам увеличиваться обычным образом. Одно из главных преимуществ SQL-профилей состоит в том, что они позволяют производить настройку “коробочных” приложений. Такие приложения трудно настраивать из-за отсутствия возможности легко получать доступ к их коду и изменять его. Поскольку профили SQL сохраняются в словаре данных, их можно применять для настройки приложений подобного рода.

 

Анализ путей доступа

На этом этапе ATO анализирует, каким образом применение улучшенного метода доступа, наподобие использования индекса, отразится на запросах. Этот анализ является важным, поскольку добавление индекса может значительно увеличивать скорость выполнения запроса. Однако добавление новых индексов может также негативно сказываться на других SQL-операторах; SQL Advisor известно об этом и потому он выдает следующие рекомендации.

  • Если SQL Tuning Advisor уверен, что применение индекса будет эффективным подходом, тогда он советует создавать этот индекс.
  • Если же SQL Tuning Advisor не уверен, тогда он может советовать запускать советника SQL Access Advisor.

 

Анализ структуры SQL

На этом этапе ATO может рекомендовать изменять структуру (и синтаксические, и семантические детали) плохо работающих SQL-операторов. Для этого ATO анализирует следующие вещи:

  • ошибки в дизайне, наподобие выполнения операций полного сканирования таблиц из-за того, что не были созданы индексы;
  • использование неэффективного SQL-кода, например, конструкции NOT IN, которая, как известно, обычно работает гораздо медленнее, чем конструкция NOT EXISTS.

На заметку! ATO только выявляет плохо написанный SQL-код; автоматически переписывать его нужным образом он не будет. Вы лучше знаете свое приложение, чем ATO, поэтому Oracle лишь дает советы, к которым вы можете как прибегать, так и нет.


 

Рекомендации SQL Tuning Advisor

Ниже перечисленные некоторые рекомендации, которые может выдавать SQL Tuning Advisor.

  • Создание индексов ускорит пути доступа.
  • Использование профилей SQL позволит генерировать более оптимальный план выполнения.
  • Сбор для оптимизатора статистических данных по тем объектам, по которым у него еще нет таковых, или обновление устаревших статистических данных, принесет выгоду.
  • Переписывание SQL-кода рекомендуемым образом улучшит его производительность.

 

Использование SQL Tuning Advisor на примерах

Использовать SQL Tuning Advisor можно либо через соответствующие пакеты, либо через Web-интерфейс OEM Database Control.

 

Применение пакета DBMS_SQLTUNE для запуска SQL Tuning Advisor

Главным SQL-пакетом для настройки SQL-операторов является DBMS_SQLTUNE. Первым примером будет создание и управление задачами для настройки SQL-операторов.


На заметку! Для использования пакета DBMS_SQLTUNE необходимо обладать привилегией ADVISOR. Поэтому прежде чем выполнять любой из приводимых далее примеров, обязательно удостоверьтесь в наличии этой привилегии.


 

Выполнение автоматической настройки SQL

Настраивать SQL-операторы с помощью пакета DBMS_SQLTUNE можно так, как описано ниже.

1. Создайте задачу. Процедура CREATE_TUNING_TASK из пакета DBMS_SQLTUNE позволяет создавать задачу для настройки как одного единственного, так и нескольких операторов (набора STS). Также можно использовать (за счет применения идентификатора SQL) оператор SQL из AWR или кэша курсоров. В следующем примере показано, как создать задачу с указанием одного SQL-оператора в качестве входных данных. Сначала передаем SQL-оператор в виде аргумента CLOB, как показано ниже: 

DECLARE
my_task_name VARCHAR2(30);
my_sqltext CLOB;
BEGIN
my_sqltext := 'SELECT /*+ ORDERED */ *
           FROM employees e, locations l, departments d
           WHERE e.department_id = d.department_id AND
           l.location_id = d.location_id AND
           e.employee_id < :bnd';

Далее создаем следующую задачу по настройке:

my_task_name := DBMS_SQLTUNE.CREATE_TUNING_TASK(
sql_text            => my_sqltext,
bind_list           => sql_binds(anydata.ConvertNumber(90)),
user_name           => 'HR',
scope               => 'COMPREHENSIVE',
time_limit          => 60,
task_name           => 'my_sql_tuning_task',
description         => 'Task to tune a query on a specified employee');
                       Задача по настройке запроса для конкретного сотрудника
END;
/ 

В приведенном выше коде параметр sql_text указывает на единственный SQL- оператор, который должен быть настроен, параметр bind_list показывает, что переменная связывания bnd имеет значение 90, параметр scope — что область действия данной задачи по настройке является комплексной (COMPREHENSIVE), т.е. предусматривает анализ профиля SQL, а параметр task_limit — что общее время на анализ ограничивается 60 секундами.

2. Выполните задачу. Выполнять созданную задачу можно с помощью процедуры EXECUTE_TUNING_TASK:

BEGIN
DBMS_SQLTUNE.EXECUTE_TUNING_TASK( task_name => 'my_sql_tuning_task' );
END;
/

3. Получите отчет по настройке. Просматривать отчет по процессу настройки можно с помощью процедуры REPORT_TUNING_TASK

SQL> SET LONG 1000
SQL> SET LONGCHUNKSIZE 1000
SQL> SET LINESIZE 100
SQL> SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK( 'my_sql_tuning_task')
FROM DUAL;

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

Для управления задачами, связанными с автоматической настройкой SQL, можно использовать следующие представления:

  • DBA_ADVISOR_TASKS
  • DBA_ADVISOR_FINDINGS
  • DBA_ADVISOR_RECOMMENDATIONS
  • DBA_ADVISOR_RATIONALE
  • DBA_SQLTUNE_STATISTICS
  • DBA_SQLTUNE_PLANS

 

Управление профилями SQL

После получения рекомендаций от ATO можно принимать обнаружения и запускать процедуру DBMS_SQLTUNE.ACCEPT_SQL_PROFILE для создания надлежащего про-
филя SQL (SQL Profile), предварительно удостоверившись в наличии привилегии CREATE_ANY_PROFILE.

Из-за вышесказанного может показаться, что профиль SQL является неизбежным последствием процесса ATO, но на самом деле ATO будет лишь рекомендовать создать профиль SQL в случае построения такового в результате своего сканирования. Однако ATO будет делать это только в случае сбора вспомогательной информации при анализе статистических данных и профилировании SQL (как объяснялось выше). Применять новый профиль к SQL-оператору Oracle будет при его выполнении.

 

Управление категориями настройки SQL

Может оказаться, что для одного SQL-оператора существует целый ряд различных SQL-профилей. Из-за необходимости как-то управлять ими Oracle будет относить каждый из них к определенной категории настройки SQL. То же самое будет происходить и при входе пользователя, т.е. Oracle будет и пользователя относить к какой-нибудь категории настройки. Категория будет выбираться в соответствии со значением параметра инициализации SQLTUNE_CATEGORY.

По умолчанию параметр SQLTUNE_CATEGORY принимает значение DEFAULT, при котором любые профили SQL, принадлежащие категории по умолчанию, применяются к каждому, кто входит в систему. Категорию настройки SQL можно изменять, причем как на уровне всех пользователей по команде ALTER SYSTEM, так и на уровне отдельных сеансов с помощью команды ALTER SESSION. Например, возьмем категории PROD и DEV. Чтобы изменить категорию настройки SQL под названием PROD для всех пользователей, понадобится выполнить такую команду: 

SQL> ALTER SYSTEM SET SQLTUNE_CATEGORY = PROD;

При желании изменить категорию настройки под названием DEV на уровне отдельного сеанса, потребуется выполнить следующую команду:

SQL> ALTER SESSION SET SQLTUNE_CATEGORY = DEV; 

На заметку! Для изменения категории настройки SQL также можно применять процедуру DBMS_SQLTUNE.ALTER_SQL_PROFILE.


 

Использование OEM для запуска SQL Tuning Advisor

Чтобы использовать интерфейс OEM для запуска SQL Tuning Advisor, нужно сначала отобразить страницу SQL Tuning Advisor (Советник по настройке SQL-операторов), выполнив щелчок последовательно на ссылках Related Links (Связанные ссылки), Advisor Central (Центр советников) и SQL Tuning Advisor (Советник по настройке SQL-операторов). На этой странице затем можно указать SQL-операторы, которые требуется проанализировать с помощью SQL Advisor. Этих операторов есть два вида.

  • Главные SQL-операторы (Top SQL). Такие SQL-операторы могут представлять собой самые интенсивные SQL-операторы из кэша курсора или сохраненные SQL-
    операторы с высокой степенью нагрузки из AWR.
  • Наборы STS (SQL Tuning Sets). Такие наборы могут создаваться из любого ряда SQL-операторов.

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

 SQL Tuning Advisor -советник по настройке кода SQL в базе данных Oracle

 

Автоматическая настройка SQL-операторов с помощью SQL Tuning Advisor

О том, что подразумевается под Automatic Tuning Optimizer (ATO), уже рассказывалось ранее в этой статье. Так в Oracle называется оптимизатор, когда он работает в режиме настройки. Для изолирования плохо написанных SQL-операторов и предоставления рекомендаций по их улучшению Automatic Tuning Optimizer выполняет для SQL- операторов с высокой степенью нагрузки следующие виды анализа: анализ статистических данных, профилирование SQL, анализ путей доступа и анализ структуры SQL. При запуске сеанса советника SQL Tuning Advisor он автоматически вызывает Automatic Tuning Optimizer для настройки SQL-операторов. SQL Tuning Advisor предоставляет рекомендации, но самостоятельно реализовать их не может.

Кроме того, Automatic Tuning Optimizer регулярно запускается в виде автоматизированной задачи по обслуживанию, которая называется задачей автоматической настройки SQL с помощью советника SQL Tuning Advisor (Automatic SQL Tuning Advisor). При выполнении этой задачи советник может выявлять плохо работающие SQL-операторы, выбирая их из AWR, предоставлять рекомендации по их улучшению, а также реализовать любые из рекомендаций, которые касаются создания SQL-профилей. Во время этой задачи тоже проводится анализ статистических данных, профилирование SQL, анализ планов путей доступа и анализ структуры SQL.

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

 

Определение кандидатов на выполнение автоматической настройки

Для выбора кандидатов на выполнение автоматической настройки в Automatic SQL Tuning Advisor применяется процесс выявления главных SQL-операторов в AWR (AWR Top SQL Identification Process). При выборе таких кандидатов во внимание берется используемое SQL-операторами время ЦП и время подсистемы ввода-вывода. Целью является выбор операторов, которые имеют наибольший потенциал в плане улучшения. Советник подготавливает список операторов, являющихся возможными кандидатами, путем отнесения главных SQL-запросов за прошлую неделю к следующим “столбцам”:

  • Top for the week (Главный за неделю)
  • Top for any day in the week (Главный за любой день недели)
  • Top for any hour during the week (Главный за любой час в неделе)
  • Highest average single execution (С самым высоким средним показателем по однократному выполнению)

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

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

 

Настройка и предоставление рекомендаций

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

Далее советник предоставляет различные рекомендации для улучшения плохо работающих SQL-операторов, наподобие создания индексов, обновления статистических данных оптимизатора, изменения структуры SQL-операторов и создания SQL-профилей. Реализовать автоматически он может только те рекомендации, которые касаются создания SQL-профилей. Прежде чем реализовать рекомендуемые им самим SQL-профили, он сначала создает и тестирует их. Администратор баз данных потом может решить, оставлять новые SQL-профили, автоматически реализованные советником или нет, на основании анализа отчета SQL Tuning Advisor.

 

Тестирование рекомендаций, касающихся новых профилей SQL

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

 

Реализация профилей SQL

Значение атрибута ACCEPT_SQL_PROFILES в представлении SET_TUNING_TASK_PARAMETERS показывает, принимает ли база данных автоматически предоставляемые Automatic SQL Tuning Advisor рекомендации касательно профилей SQL. Представление DBA_SQL_PROFILES отображает все те профили SQL, которые были реализованы автоматически. Если профиль был реализован автоматически, у него в этом представлении в столбце TYPE будет содержаться значение AUTO.

 

Ограничения

Посредством Automatic SQL Tuning Advisor нельзя настраивать операторы следующих типов:

  • параллельные запросы;
  • нерегламентированные запросы;
  • рекурсивные операторы;
  • SQL-операторы, в которых используются операторы INSERT и DELETE;
  • SQL-операторы, в которых используются DDL-операторы вроде CREATE TABLE AS SELECT.

Если выполнение запроса будет занимать длительное время после реализации SQL- профиля, советник будет отклонять реализацию этого профиля, потому что делать тестовое выполнение запроса он не умеет. Обратите внимание на то, что операторы всех перечисленных выше типов, кроме нерегламентированных, можно настраивать вручную за счет запуска советника SQL Tuning Advisor вручную.

 

Конфигурирование задания по автоматической настройке SQL

Для конфигурирования и управления заданием по автоматической настройке SQL можно использовать пакет DBMS_SQLTUNE. В частности, для управления заданием SYS_AUTO_TUNING_TASK, которое контролирует весь процесс автоматической настройки SQL, можно применять следующие процедуры из этого пакета.

  • SET_TUNING_TASK_PARAMETERS. Эта процедура позволяет тестировать параметры процесса автоматической настройки SQL и управлять деталями наподобие того, должны ли профили SQL реализоваться автоматическим образом.
  • EXECUTE_TUNING_TASK. Эта процедура позволяет запускать процесс автоматической настройки в приоритетном режиме.
  • EXPORT_TUNING_TASK. Эта процедура помогает получать отчет по выполнению процесса автоматической настройки.

Процесс автоматической настройки, т.е. задание Automatic SQL Tuning Advisor, по умолчанию выполняется на протяжении максимум одного часа, но этот лимит по времени можно легко изменять с помощью процедуры SET_TUNING_TASK_PARAMETERS, как показано ниже: 

SQL> exec dbms_sqltune.set_tuning_task_parameter
('SYS_AUTO _SQL_TUNING_TASK', 'TIME_LIMIT', 14400);

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

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

  • ACCEPT_SQL_PROFILES. Этот параметр указывает, должна ли база данных автоматически принимать SQL-профили.
  • REPLACE_USER_SQL_PROFILES. Этот параметр указывает, должны ли во время процесса настройки заменяться пользовательские профили SQL.
  • MAX_SQL_PROFILES_PER_EXEC. Этот параметр указывает максимальное количество SQL-профилей, которое может приниматься в рамках одного процесса автоматической настройки SQL.
  • MAX_AUTO_SQL_PROFILES. Этот параметр указывает общее количество SQL-профилей, которое должно приниматься базой данных.
  • EXECUTION_DAYS_TO_EXPIRE. Этот параметр задает максимальное количество дней, на протяжении которых база данных должна сохранять хронологию выполнения задания. По умолчанию это количество составляет 30 дней.

Ниже приведен пример конфигурирования задания по настройке SQL так, чтобы во время его выполнения все рекомендации касательно SQL-профилей принимались автоматически:

SQL> begi
2 dbms_sqltune.set_tuning_task_parameters(
3 task_name => 'SYS_AUTO_SQL_TUNING_PROG',
4 parameter => 'accept_sql_profiles', value => 'true');
5* end;
SQL> /

В этом примере для параметра ACCEPT_SQL_PROFILES установлено значение TRUE, которое и будет заставлять советник автоматически принимать все рекомендации, касающиеся SQL-профилей.

Процедура SYS_AUTO_SQL_TUNING_TASK запускает задание по автоматической настройке SQL каждую ночь во время выделенного в планировщике Oracle Scheduler окна обслуживания. Она производит настройку SQL-операторов согласно имеющимся у SQL-кандидатов приоритетов. Она создает для каждого оператора необходимые SQL- профили и тестирует их перед тем, как переходить к настройке следующего оператора в списке кандидатов.

 

Управление заданием по автоматической настройке SQL

Для включения и отключения выполнения задания Automatic SQL Tuning во время заданного в планировщике Oracle Scheduler окна обслуживания можно использовать пакет DBMS_AUTO_TASK_ADMIN. Включать выполнение задания Automatic SQL Tuning Advisor позволяет предлагаемая в этом пакете процедура ENABLE

begin
dbms_auto_task_admin.enable (
client_name => 'sql tuning advisor',
operation => 'NULL',
window_name='NULL');
end;

Установка для параметра WINDOW_NAME значения NULL приводит к включению выполнения задания во всех окнах обслуживания. При желании включить выполнение этого задания только в каком-то определенном окне, нужно указать имя интересующего окна:

begin
dbms_auto_task_admin.enable (
client_name => 'sql tuning advisor',
operation => 'NULL',
window_name='monday_night_window');
end;

Отключается выполнение задания Automatic SQL Tuning Advisor с помощью процедуры DISABLE, как показано ниже:

begin
dbms_auto_task_admin.disable (
client_name => 'sql tuning advisor',
operation => 'NULL',
window_name='NULL');
end; 

Приведенный выше код приведет к отключению выполнения задания по автоматической настройке SQL во время окна обслуживания, поскольку для параметра WINDOW_NAME значение задано не было.


Совет. За счет установки параметра TEST_EXECUTE при выполнении процедуры SET_TUNING_TASK_PARAMETER, задание Automatic SQL Tuning Advisor можно запускать в режиме тестового выполнения для экономии времени.


Все параметры Automatic SQL Tuning можно также легко конфигурировать через интерфейс Database Control (или Grid Control), перейдя на страницу Automatic SQL Tuning Settings (Параметры автоматической настройки SQL), которая доступна по щелчку на кнопке Configure (Конфигурировать) на странице Automated Maintenance Tasks (Автоматизированные задания по обслуживанию). На странице Automated Maintenance Tasks можно конфигурировать все автоматизированные задания. Например, для получения рекомендаций по исправлению SQL-оператора понадобится выполнить следующие шаги.

  1. Щелкните на полученном элементе с наиболее высоким показателем по воздействию на время базы данных на домашней странице Database Control.
  2. Щелкните на ссылке Schedule SQL Tuning Advisor (Планирование запуска советника по настройке SQL-операторов) на странице SQL Details (Детали по SQL)
  3. Щелкните на кнопке Submit (Отправить) на странице Scheduler Advisor (Советник планировщика).
  4. Щелкните на кнопке Implement (Реализовать) при желании, чтобы рекомендации советника принимались автоматически.
  5. Щелкните на кнопке Yes (Да) на странице Confirmation (Подтверждение) для генерирования базой данных нового профиля SQL.
  6. Просмотрите информацию о выгодах настройки, перейдя на страницу Performance (Производительность) после того, как база данных выполнит настроенный оператор снова.

Для просмотра информации о последних выполнениях задания Automatic SQL Tuning Advisor также служит страница Automated Maintenance Tasks. Для этого сначала нужно щелкнуть на вкладке Server (Сервер) на домашней странице Database Control, потом на ссылке Automated Maintenance Tasks (Автоматизированные задания по обслуживанию) в разделе Tasks (Задания) на странице Server (Сервер), а затем на представляющей самое последнее выполнение пиктограмме или ссылке на задание Automatic SQL Tuning для отображения страницы SQL Tuning Result Summary (Сводка по результатам настройки SQL).

 

Интерпретация отчетов по автоматической настройке SQL

Получить отчет по выполнению заданий Automatic SQL Tuning Advisor можно с помощью функции REPORT_AUTO_TUNING_TASK, как показано ниже: 

SQL> begin
2 :test_report :=dbms_sqltune. report_auto_tuning_task (
3 type => 'text',
4 level => 'typical',
5 section => 'all');
6* end;
SQL> /
PL/SQL procedure successfully completed.
SQL>
print :test_report

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

Для получения информации о заданиях Automatic SQL Tuning служат следующие представления.

  • DBA_ADVISOR_EXECUTIONS. Это представление показывает ассоциируемые с каждым заданием метаданные.
  • DBA_ADVISOR_SQLSTATS. Это представление отображает перечень всех статистических данных по компиляции и выполнению SQL-операторов.
  • DBA_ADVISOR_SQLPLANS. Это представление отображает список всех планов выполнения SQL.

Например, ниже приведен запрос, показывающий, как получить информацию обо всех заданиях Automatic SQL Tuning Advisor: 

SQL> SELECT execution_name, status, execution_start, execution_end
FROM dba_advisor_executions
WHERE task_name='SYS_AUTO_SQL_TUNING_TASK';

 

Применение других средств с графическим интерфейсом

Утилиты EXPLAIN PLAN и SQL Trace являются не единственными инструментами, которые доступны для настройки SQL-операторов. Несколько других средств с графическим интерфейсом предоставляют ту же самую информацию гораздо быстрее. Перед их использованием главное проверять, чтобы в файле инициализации была включена функция сбора статистических данных. Одним из наиболее хорошо известных сторонних средств является бесплатная версия программного обеспечения TOAD, которая распространяется компанией Quest Software (http://www.quest.com). С ее помощью можно получать не только план выполнения, но сведения об использовании памяти, вызовах синтаксического анализа, потреблении ресурсов подсистемы ввода-вывода и много другой подобной полезной информации, которая будет помогать настраивать запросы. Применение средств с графическим интерфейсом позволяет избегать большей части той монотонной работы, которую требуется проводить при получении и считывании вывода EXPLAIN PLAN. Обратите внимание, что независимо от того, применяются средства с графическим интерфейсом или ручные методы, используемые при этом динамические представления одни и те же. Отличается просто способ, которым к ним получается доступ, и которым используются их данные.

Вас заинтересует / Intresting for you:

Операции SQL в базе данных Ora...
Операции SQL в базе данных Ora... 6801 просмотров Antoni Wed, 11 Apr 2018, 12:22:28
Глобализация и локализация про...
Глобализация и локализация про... 2049 просмотров Максим Николенко Sat, 19 Oct 2019, 07:19:19
Преобразование даты и времени ...
Преобразование даты и времени ... 46084 просмотров Masha Sun, 10 Jun 2018, 14:01:34
Получение текущей даты и време...
Получение текущей даты и време... 15047 просмотров Ирина Светлова Tue, 05 Jun 2018, 12:19:34
Войдите чтобы комментировать

OraCool аватар
OraCool ответил в теме #8913 6 года 2 мес. назад
Хороший материалец по SQL Tuning Advisor . С нетерпением ждем обзора TOADа. Кто с ним работает, подскажите на сколько он круче Tuning Advisor? Или те же яйца, вид сбоку?