Управление SQL-планами в Oracle Database 11g - Выбор опорного плана выполнения SQL
ОГЛАВЛЕНИЕ
Выбор опорного плана выполнения SQL
При работе с SPM для выполнения будут выбраны только
известные или проверенные планы
Рисунок 4. Как с помощью SPM выбирается план выполнения
Также можно повлиять на выбор плана оптимизатором, когда он его выбирает. Планы могут быть отмечены, как фиксированные (fixed SQL plan baselines). Фиксированные опорные планы выполнения SQL указывают оптимизатору, что предпочтительные. Если оптимизатор будет оценивать опорные планы и один из планов окажется фиксированным, то оптимизатор будет оценивать только этот фиксированный план и остановится на нем, если только он является воспроизводимым. Если фиксированный план (ы) будет невоспроизводимым, то оптимизатор возвратится к оценке оставшихся опорных планов выполнения SQL и выберет план с наименьшей стоимостью. Отметьте, что оценка стоимости плана гораздо ниже, чем стоимость полного разбора. Оптимизатор не исследует все возможные методы доступа, а только один определенный путь доступа.
Эволюция опорного плана выполнения SQL
Планы можно эволюционировать вручную
или подтверждать в любое время,
или же можно запланировать задание базы данных
для выполнения процесса эволюции
Когда оптимизатор находит для SQL-оператора новый план выполнения, этот план добавляется к архиву, как еще непринятый план, который должен быть проверен, прежде чем он сможет стать принятым планом. Можно развить план выполнения SQL-оператора, используя Oracle Enterprise Manager или выполняя в командной строке функцию DBMS_SPM.EVOLVE_SQL_PLAN_BASELINE. При использовании любого из этих методов имеются три выбора:
- Принять план только в том случае, если он выполняется лучше, чем существующий опорный план выполнения SQL
- Принять план, не делая проверки производительности
- Запустить сравнение производительности и сгенерировать отчет, не развивая нового плана.
Первый вариант ведет к оценке нового плана, чтобы увидеть, работает ли он лучше, чем выбранный план. Если это так, то новый план будет добавлен к опорному плану, как принятый, а если нет, то новый план останется в архиве планов, как непринятый план, но его атрибут LAST_VERIFIED будет обновлен – в него будет занесена текущая отметка даты/времени. Функция возвращает форматированный текстовый отчет, в котором содержатся действия, выполненные функцией, и дается параллельный показ статистики производительности нового и первоначального планов.
Если выбирается вариант 2, то новый план будет добавлен к опорному плану выполнения SQL как принятый план без проверки его производительности. Отчет также будет сгенерирован.
По варианту 3 выполняется оценка нового плана, чтобы увидеть, выполняется ли он лучше, чем выбранный план, но даже если это так, новый план не будет принят автоматически. После оценки будет всего лишь сгенерирован отчет.