|
|
|||||||||||||||||||||||||||||
|
Управление SQL-планами в Oracle Database 11gИсточник: Oracle
ЗАМЕЧАНИЕ
Оглавление
Введение Механизм SQL PLAN MANAGEMENT Гарантируемая стабильность и Механизм управления планами выполнения SQL-операторов (SPM) гарантирует, что изменение плана оператора никогда не приведет к ухудшению его производительности во время выполнения. Чтобы гарантировать это, используются только принятые планы выполнения; любая эволюция плана впоследствии будет отслежена и оценена и будет принята, как проверенная, только в том случае, если новый план приводит во время выполнения к каким-либо изменениям или усовершенствованиям. SQL Plan Management состоит из трех основных компонентов:
Рис. 0. База SQL Management, состоящая из журнала операторов и архивов планов для повторяющихся SQL-операторов (repeatable SQL Statements). Получение опорного SQL-плана Получите планы 'на лету' или выполните Для того чтобы смог заработать SPM, сначала нужно заполнить SQL Management Base текущими стоимостными планами выполнения, которые станут опорными планами выполнения для каждого SQL-оператора. Имеется два различных способа заполнения SQL Management Base:
Automatic plan capture can be switched on by setting the init.ora parameter OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES to TRUE (the default value is false) . With automatic plan capture enabled, the SPM repository will be automatically populated for any repeatable SQL statement. To identify repeatable SQL statements, the optimizer will log the identity (SQL Signature) of each SQL statement into a statement log the first time it is compiled. If the SQL statement is processed again (executed or compiled) the presence of its identity in the statement Автоматическое получение планов выполнения - "на лету" Включение автоматического получения планов производится установкой параметра OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES на TRUE ( значение по умолчанию - FALSE) в файле init.ora . При этом репозиторий SPM будет заполняться автоматически для любого повторяющегося SQL-оператора. Для определения повторяющегося SQL-оператора оптимизатор при первой компиляции регистрирует идентификационный параметр (сигнатуру SQL) каждого SQL-оператора в журнале операторов. Если SQL-оператор обрабатывается снова (выполняется или компилируется), то наличие его идентификационного параметра в журнале операторов укажет на то, что подобный оператор является повторяющимся. Для оператора будет создан архив SQL-планов выполнения, в который вкладывается информация, используемая оптимизатором для воспроизведения планов выполнения, как-то: текст оператора SQL, иерархическая структура, переменные связывания и среда компиляции. Текущий стоимостной план добавляется как первый опорный SQL-план выполнения, и этот план отмечается как принятый. Используются только принятые планы; если через некоторое время для этого SQL-оператора будет найден новый план, то он будет добавлен к архиву планов выполнения и отмечен, как подлежащий проверке. Он отмечается как принятый только в том случае, если его производительность будет лучше, чем производительность плана, выбранного из текущего опорного. Рис. 1. База SQL Management, состоящая из журнала операторов и архивов планов выполнения для повторяющихся операторов. Операция массовой загрузки Планы выполнения в операциях массовой загрузки особенно полезны, когда проводится обновление базы данных с предыдущей версии до Oracle Database 11g, или при развертывании нового приложения. Операция массовой загрузки может быть выполнена вместе с автоматическим получением плана или вместо него. Планы выполнения, которые были загружены с помощью операции массовой загрузки, автоматически принимаются для создания новых опорных планов выполнения SQL или для добавления к существующим планам. Для массовой загрузки в SQL Management Base могут быть использованы три различные методики:
Из набора настроек SQL ( STS)
Сразу после создания опорных планов выполнения SQL они начнут использоваться, гарантируя, что при переходе от 10gR2 к 11gR1 не произойдет никаких изменений плана. Если оптимизатор в базе данных Oracle 11g придумает другой план выполнения, то этот план будет добавлен к архиву планов и будет отмечен, как подлежащий проверке. Он будет отмечен как принятый только в том случае, если его производительность будет столь же хороша, как у текущего опорного SQL-плана (для 10gR2), или лучше. Из кэша курсора Имеется возможность загрузить планы операторов в SQL Management Base непосредственно из кэша курсора. Применяя фильтр по имени модуля, схеме или SQL_ID, можно идентифицировать SQL-оператор или набор из SQL-операторов, данные о которых нужно собрать. Для загрузки планов может быть использована процедура PL/SQL DBMS_SPM . LOAD_ PLANS_ FROM_ CURSOR_ CACHE. Или жеэто можно сделать через Oracle Enterprise Manager. При следующем выполнении этих операторов будут использоваться их опорные SQL-планы. Распаковка опорных планов из промежуточной таблицы Развертывание нового модуля приложения означает введение в базу данных совершенно новых SQL-операторов. С Oracle Database 11g любой вендор программного обеспечения от третьих фирм может начать поставку своего прикладного программного обеспечения наряду с соответствующими опорными планами выполнения SQL для вновь вводимых SQL-операторов. Это служит гарантией, что для всех SQL-операторов, являющихся частью опорного плана выполнения SQL, сначала используются планы, про которые известно, что они давали хорошую производительность в стандартной тестовой конфигурации. Альтернативно, если приложение было разработано собственными силами или проходило тестирование внутри фирмы, правильные планы могут быть экспортированы из тестовой системы и импортированы в промышленную версию с помощью следующих шагов:
Рис. 3. Импорт опорных планов выполнения SQL из тестовой системы при реализации нового приложения Выбор опорного плана выполнения SQL При работе с SPM для выполнения будут выбраны только При каждой компиляции SQL-оператора для построения плана выполнения с наилучшей стоимостью оптимизатор сначала использует традиционный метод поиска по стоимости. Если параметр инициализации OPTIMIZER_USE_PLAN_BASELINES , установлен на TRUE (значение по умолчанию), то перед тем, как будет выполнен стоимостной план, оптимизатор попробует найти соответствующий план в опорном плане выполнения SQL-оператора. Эти действия выполняются как операция в оперативной памяти, так что в работу любого приложения не вносится никаких измеримых накладных расходов. Если соответствие найдено, оптимизатор продолжит работу с этим планом. В противном случае, если не будет найдено никакого соответствия, то недавно сгенерированный план будет добавлен к архиву выполнения планов; он должен быть подвергнут проверке, прежде чем его можно будет принять, как опорный план выполнения. Вместо выполнения недавно сгенерированного плана оптимизатор будет оценивать каждый из принятых планов для SQL-оператора и выбирать из них план с самой низкой стоимостью выполнения (заметьте, что в опорном плане может насчитываться более одного проверенного/принятого плана для данного оператора). Однако, если какое-либо изменение в системе (например, удаление индекса) приведет к ситуации, когда все принятые планы станут невоспроизводимыми, то оптимизатор будет использовать недавно сгенерированный стоимостной план.
Также можно повлиять на выбор плана оптимизатором, когда он его выбирает. Планы могут быть отмечены, как фиксированные (fixed SQL plan baselines). Фиксированные опорные планы выполнения SQL указывают оптимизатору, что предпочтительные. Если оптимизатор будет оценивать опорные планы и один из планов окажется фиксированным, то оптимизатор будет оценивать только этот фиксированный план и остановится на нем, если только он является воспроизводимым. Если фиксированный план (ы) будет невоспроизводимым, то оптимизатор возвратится к оценке оставшихся опорных планов выполнения SQL и выберет план с наименьшей стоимостью. Отметьте, что оценка стоимости плана гораздо ниже, чем стоимость полного разбора. Оптимизатор не исследует все возможные методы доступа, а только один определенный путь доступа. Эволюция опорного плана выполнения SQL Планы можно эволюционировать вручную Когда оптимизатор находит для SQL-оператора новый план выполнения, этот план добавляется к архиву, как еще непринятый план, который должен быть проверен, прежде чем он сможет стать принятым планом. Можно развить план выполнения SQL-оператора, используя Oracle Enterprise Manager или выполняя в командной строке функцию DBMS_SPM .EVOLVE_SQL_PLAN_BASELINE. При использовании любого из этих методов имеются три выбора:
Первый вариант ведет к оценке нового плана, чтобы увидеть, работает ли он лучше, чем выбранный план. Если это так, то новый план будет добавлен к опорному плану, как принятый, а если нет, то новый план останется в архиве планов, как непринятый план, но его атрибут LAST_VERIFIED будет обновлен - в него будет занесена текущая отметка даты/времени. Функция возвращает форматированный текстовый отчет, в котором содержатся действия, выполненные функцией, и дается параллельный показ статистики производительности нового и первоначального планов. Использование и управление базой SQL MANAGEMENT BASE Параметры инициализации Для управления SPM в файле init.ora имеются два параметра: optimizer_capture_sql_plan_baselines - управляет автоматическим получением новых опорных планов выполнения для повторяющихся SQL-операторов. В 11gR1 этот параметр по умолчанию установлен на FALSE. optimizer_use_sql_plan_baselines - управляет использованием опорных SQL-планов. Когда он активирован, оптимизатор ищет в опорных SQL-планах планы для SQL-оператора, подлежащего компиляции. Если какие-либо планы найдены, то оптимизатор оценивает каждый план и выберет тот, у которого будет самая низкая стоимость. В 11gR1 по умолчанию этот параметр установлен на TRUE. Управление потреблением дисковой памяти в SQL Management Base Журнал операторов, архивы планов и опорные планы SQL хранятся в SQL Management Base. База SQL Management Base - это часть словаря базы данных, хранящаяся в табличном пространстве SYSAUX. По умолчанию максимальный размер отводимого для SQL Management Base дискового пространства не должен превышать 10% размера табличного пространства SYSAUX. Однако, используя для этого процедуру PL/SQL DBMS_SPM.CONFIGURE, можно заменить это предельное значение любым значением в диапазоне от 1% до 50%. Еженедельно выполняемый фоновый процесс измеряет общий объем пространства, занятого SQL Management Base, и когда ранее определенный предел превышается, этот процесс генерирует предупреждение в журнале предупреждений (alert log). Кроме того, имеется запланированная к еженедельному выполнению задача чистки, управляющая дисковым пространством, используемым SPM в SQL Management Base. Задача автоматически выполняется во время технологического окна и удаляет любые планы, которые не использовались в течение более чем 53 недель. Тем самым достигается гарантия, что любые SQL-операторы, выполняемые хотя бы один раз в год, останутся доступными. Изменить период сохранения неиспользуемых планов можно, используя DBMS_SPM.CONFIGURE либо Enterprise Manager. Новое значение может находиться в диапазоне от 5 до 523 недель (немногим более 10 лет). Поскольку SQL Management Base полностью хранится внутри табличного пространства SYSAUX, SPM не применяется, если это табличное пространство недоступно. Рис. 5. Изменение установки продолжительности использования плана в EM Мониторинг SQL PLAN MANAGEMENT Для ведения мониторинга SPM используйте EM DBControl Для ведения мониторинга функциональности SPM в Oracle Database 11g было введено несколько новых экранов управления предприятием и представлений АБД. Все аспекты управления и мониторинга опорных SQL-планов могут быть выполнены через Enterprise Manager Database Control. Начало работы Чтобы попасть на страницу опорного плана выполнения SQL:
С основной страницы можно управлять параметрами init.ora, планировать задания по загрузке или эволюции, а также изменять некоторые атрибуты существующих опорных планов SQL.
Рис. 7. Установка в EM связанных с SPM параметров файла init.ora Массовая загрузка планов
Рисунок 8. Массовая загрузка опорных планов SQL из курсора кэша в EM Изменение атрибутов
Просмотр плана выполнения опорного плана SQL
Мониторинг SPM через представления АБД
Этот оператор select возвращает следующие строки:
В этом примере у одного и того же SQL-оператора имеется два плана, причем оба они были получены автоматически. Один из планов (SYS_SQL_PLAN_4be) является опорным планом для плана выполнения, поскольку он является и допустимым, и принятым. Другой план (SYS_SQL_PLAN_lea) - это непринятый план, который был поставлен в очередь для изменения или проверки. Он был автоматически получен и поставлен в очередь для проверки; значение параметра accepted для него установлено на NO. Ни один из планов не является фиксированным, и оба они подлежат автоматической чистке. Чтобы проверить детализированный план выполнения для любого опорного плана, можно использовать процедуру DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINE. Кроме того, если изучить представление V$SQL , появляется возможность проверить, использует ли SQL-оператор опорный план . Если SQ-оператор использует опорный план SQL plan, то plan_name для плана, выбранного из опорного плана SQL, будет содержаться в столбце sql_plan_baseline представления V$SQL. Можно соединить представление V$SQL и представление DBA_SQL_PLAN_BASELINES , используя следующий запрос:
Интеграция с автоматической настройкой SQL Можно вызвать SQL Tuning Advisor вручную. Для этого достаточно для данного SQL- оператора создать набор SQL Tuning Set. Если SQL Tuning Advisor рекомендует SQL-профиль для оператора и он реализуется вручную, то этот профиль будет добавлен, как принятый план для опорных планов выполнения операторов SQL, если такой существует. ЗАКЛЮЧЕНИЕ Новая опция Oracle Database 11g, которая называется SQL Plan Management (SPM), обеспечивает управляемую эволюцию планов выполнения. В случае использования SPM оптимизатор автоматически управляет планами выполнения и гарантирует, что будут использоваться только известные или проверенные планы. Когда для SQL-оператора находится новый план, он не будет использован, пока для него не будет подтверждено, что его производительность сопоставима с производительностью текущего плана или лучше ее.
SQL Plan management in Oracle Database 11 g Oracle Corporation World Headquarters 500 Oracle Parkway Worldwide Inquiries: Phone: +1.650.506.7000 Fax: +1.650.506.7200 oracle.com Copyright© 2007, Oracle. All rights reserved. Ссылки по теме
|
|