Oracle mechanics

07.03.2015

12c: управление адаптивными фичами

Filed under: CBO,Oracle — Игорь Усольцев @ 23:03
Tags: ,

По умолчанию, ответственный параметр OPTIMIZER_ADAPTIVE_FEATURES enables or disables all of the adaptive optimizer features, including adaptive plan (adaptive join methods and bitmap plans), automatic re-optimization, SQL plan directives, and adaptive distribution methods, установлен в TRUE и перечисленные функции оптимизатора 12c могут работать

Если же отключить параметр на уровне любого простого запроса:

12.1.0.2.SCOTT@/ORCL1201 SQL> select /*+ opt_param('optimizer_adaptive_features' 'false')*/ sysdate from dual;

1 row selected.

, секция Outline плана выполнения показывает параметы управления адаптивными компонентами по отдельности:

SQL> SELECT * FROM TABLE(dbms_xplan.display_cursor('','','+outline'));
...
Outline Data
-------------

  /*+
      BEGIN_OUTLINE_DATA
      IGNORE_OPTIM_EMBEDDED_HINTS
      OPTIMIZER_FEATURES_ENABLE('12.1.0.2')
      DB_VERSION('12.1.0.2')
      OPT_PARAM('_optimizer_use_feedback' 'false')            -- откл. Cardinality Feedback в 11.2, или же Statistics Feedback в 12c
      OPT_PARAM('_px_adaptive_dist_method' 'off')             -- откл. Adaptive plans в части выбора Parallel Distribution method
      OPT_PARAM('_optimizer_dsdir_usage_control' 0)           -- откл.использование SQL Plan Directives
      OPT_PARAM('_optimizer_adaptive_plans' 'false')          -- откл. Adaptive plans целиком ? - надо проверить
      OPT_PARAM('_optimizer_strans_adaptive_pruning' 'false') -- откл. Adaptive plans в части pruning of star transformation bitmap trees (*)
      OPT_PARAM('_optimizer_gather_feedback' 'false')         -- новый параметр 12c, относящийся к Automatic Reoptimization ?
      OPT_PARAM('_optimizer_nlj_hj_adaptive_join' 'false')    -- Adaptive plans в части выбора метода соединения Nested Loop <-> Hash
      ALL_ROWS
      OUTLINE_LEAF(@"SEL$1")
      END_OUTLINE_DATA
  */

*) Franck Pachot.Star Transformation, 12c Adaptive Bitmap Pruning and In-Memory option

Система управления адаптивными возможностями CBO 12c показалась мне стройной и красивой, осталось проверить и убедиться, что всё работает так же как нарисовано)

Интересно, что старый добрый Cardinality Feedback, переименованный в Statistics Feedback, плавно перекочевал в новую адаптивную иерархию, в то время как механизм Adaptive Cursor Sharing — включён не был несмотря на использование некой динамической статистики оптимизатора и присутствие адаптивности в названии (поторопились задействовать слово красивое?:) и, судя по документации, оказался заморожен мало изменился с момента появления в версии 11g. Возможно, даже несколько ограничена сфера применения: в списке условий применения ACS кроме стандартного наличия peeked bind переменных и гистограм в документации 12c появился дополнительный критерий:

The bind is used in a range predicate

— что может, если подтвердится, оказаться сужением сферы действия **

(**) UPD Проверил, ACS 12c по-прежнему предсказуемо работает как с equality, так и с range predicate, видимо, какое-то уточнение документации

Например, запросы

select count(distinct n2) from bacs where n1 = :v1;
select count(distinct n2) from bacs where n1 between :v1 and :v2;

на ранее описанном кейсе для версии 11.2 при последовательном использовании частых и редких значений переменных устойчиво генерируют отличные ACS курсоры:

12.1.0.2.SCOTT@/ORCL1201 SQL> @shared_cu12 dj17fb4dasqj9

EXECS ELA_PER_EXEC PLAN_HASH_VALUE OPTIMIZER_COST  CHILD BIND_SENSE BIND_AWARE SHAREABLE  REOPT ADAPT USE_FEEDBACK_STATS OPTIMIZER_STATS  BIND_EQ_FAILURE REASON1
----- ------------ --------------- -------------- ------ ---------- ---------- ---------- ----- ----- ------------------ ---------------- --------------- ---------------------------------------------
    2      2867958      2853767438          18607      0 Y          N          N          N           N                  Y                N               Bind mismatch(25)  |  extended_cursor_sharing
    2         1386      2772694726              2      1 Y          Y          Y          N           N                  N                N

Добавить комментарий »

Комментариев нет.

RSS feed for comments on this post. TrackBack URI

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

Блог на WordPress.com.

%d такие блоггеры, как: