1 / 14

Возможные источники проблем

Настройка запроса по образцу: четыре способа корректировки плана запроса без изменения кода Деев Илья, «Иннова-Системс». Возможные источники проблем. Обновление кода приложения Изменение данных и статистики Смена версии и изменение поведения оптимизатора Изменение параметров оптимизатора.

holly-case
Download Presentation

Возможные источники проблем

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Настройка запроса по образцу: четыре способа корректировки плана запроса без изменения кодаДеев Илья, «Иннова-Системс»

  2. Возможные источники проблем • Обновление кода приложения • Изменение данных и статистики • Смена версии и изменение поведения оптимизатора • Изменение параметров оптимизатора

  3. Борьба с неприятными сюрпризами Тестирование помогает избежать больших проблем Планы редко меняются в худшую сторону массово Проблемы появляются неожиданно Когда нет времени ждать, нужна срочная настройка

  4. Что хотелось бы получить Быстрое применение настроенного плана к проблемному запросу Возможность контроля за применением нового плана Возможность быстрой отмены или замены примененного плана.

  5. Настройка запроса по образцу • Находим проблемы с планом запроса • Изменяем план запроса хинтами • Проверяем результат через выполнение нового варианта запроса • Применяем набор хинтов настроенного запроса к проблемному запросу

  6. “SQL hint injection” • Проблемная • версия SQL • Неприемлемый план • Все хинты настроенного запроса на вход CBO • Настроенный план Настроенная версия SQL • Неприемлемый план • Регулирующие хинты • Настроенный план • Все хинты настроенного запросана выходе CBO

  7. Немного о хинтах • Хинты как результат работы оптимизатора select * from table(dbms_xplan.display_cursor(<sql_id>,<child_number>,'outline')); • Хинты в тексте запроса – гарантия применения, но при этом отсутствие гибкости • Хинты в механизмах стабилизации планов выполнения: Stored Outlines -> SQL Plan Baselines

  8. Тестовые данные Скрипт 0.test_data.sql -- пользователь drop user test cascade; create user test identified by test; grant connect, resource to test; -- данные для тестового запроса create table test.drop_tbl as select rownum n, 'txt'||rownum txt from dual connect by level <=10000; create index test.i_drop_tbl_id on test.drop_tbl(n); -- статистика begin dbms_stats.gather_table_stats(ownname => 'test', tabname => 'drop_tbl'); end;

  9. Метод 1: SQL Plan Baseline Oracle 11 Enterprise Edition Идея - работа с планом запроса-образца: dbms_spm.load_plan_from_cursor_cache Права, параметр, скрипты с примерами создания и удаления: 1.sql_plan_baseline.sql Контроль:V$SQL.SQL_PLAN_BASELINE Преимущество – стандартный функционал, простота использования

  10. Метод 2: SQL Patch Oracle 11 (официально – в EE, SQL Repair Advisor в Enterprise Manager, реально - все редакции) Идея – использовать SQL patch не в рамках SQL Repair Advisor, а напрямую Скрипты – 2.sql_patch.sql Контроль – V$SQL.SQL_PATCH Особенность – хинты обрабатываются только в системном виде, используется внутренний пакет: sys.dbms_sqldiag_internal.i_create_patch

  11. Метод 3: SQL Profile • Oracle 10, 11, Diagnostic & Tuning Pack • Идея – использовать список нужных хинтов при импорте профиля: DBMS_SQLTUNE.IMPORT_SQL_PROFILE • Скрипты: 3.sql_profile.sql • Контроль – V$SQL.SQL_PROFILE • Особенность: по сути - мягкий хак

  12. Метод 4: Outlines Oracle 9,10,11, все редакции  Идея – заменить список хинтов в private outline проблемного запроса хинтами настроенного запроса и создать на его основе public outline. Скрипты: 4.1.outlines.sql, 4.2.outlines.sql Контроль - ALL_OUTLINES Особенность – метод устарел, но … он самый мощный!

  13. Отмена действия хинтовв тексте запроса Хинт IGNORE_OPTIM_EMBEDDED_HINTS

  14. Приоритеты при совместном использовании

More Related