Oracle mechanics

20.06.2014

И ещё про Filter Push-Down

Filed under: Optimizer features,Oracle — Игорь Усольцев @ 00:04
Tags:

При попытке отключения всех типов трансформаций запроса (на примере из предыдущей записи):

SQL> SELECT--+ NO_QUERY_TRANSFORMATION OPT_PARAM('_optimizer_cost_based_transformation' 'off')
  2   *
  3    FROM (  SELECT /* this will be a view */
  4                  TRUNC (a.DT, 'mm') BEG_MONTH,
  5                   ADD_MONTHS (TRUNC (a.DT, 'mm'), 1) - 1 END_MONTH,
  6                   SUM (a.SUM_RUR) SUM_RUR
  7              FROM MVIEW__DAILY_SALES a
  8              WHERE a.dt BETWEEN TRUNC (a.DT, 'mm') AND ADD_MONTHS (TRUNC (a.DT, 'mm'), 1) - 1
  9          GROUP BY TRUNC (a.DT, 'mm'), ADD_MONTHS (TRUNC (a.DT, 'mm'), 1) - 1
 10         ) V
 11   WHERE beg_month = DATE '2013-04-01' AND end_month = DATE '2013-04-30'
 12  /

SQL> SELECT * FROM TABLE(dbms_xplan.display_cursor( format => 'BASIC,PARTITION,OUTLINE,PREDICATE'));

-----------------------------------------------------------------------
| Id  | Operation                | Name               | Pstart| Pstop |
-----------------------------------------------------------------------
|   0 | SELECT STATEMENT         |                    |       |       | -- NO_QUERY_TRANSFORMATION успешно
|   1 |  VIEW                    |                    |       |       | -- отключает Complex View Merging
|   2 |   HASH GROUP BY          |                    |       |       |
|   3 |    PARTITION RANGE SINGLE|                    |   101 |   101 |
|*  4 |     MAT_VIEW ACCESS FULL | MV_F_SALES_DAYLY_1 |   101 |   101 |
-----------------------------------------------------------------------

Outline Data
-------------

  /*+
      BEGIN_OUTLINE_DATA
      IGNORE_OPTIM_EMBEDDED_HINTS
      OPTIMIZER_FEATURES_ENABLE('11.2.0.3')
      DB_VERSION('11.2.0.3')
      OPT_PARAM('_optimizer_cost_based_transformation' 'off')           -- CBQT также отключены
      ...
  */

Predicate Information (identified by operation id):
---------------------------------------------------

   4 - filter((...
               AND "A"."DT">=TO_DATE('2013-04-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss')   -- но судя по сгенерированным предикатам
               AND "A"."DT"<=TO_DATE('2013-04-30 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))) -- Filter Push-Down работает!

, а трейс CBO подтверждает срабатывание и FPD, и хинтов:

Dumping Hints
=============
  atom_hint=(@=0x16d9c6a770 err=0 resol=0 used=1 token=1087 org=1 lvl=1 txt=OPT_PARAM ())
  atom_hint=(@=0x179ff55e60 err=0 resol=0 used=1 token=986 org=1 lvl=1 txt=NO_QUERY_TRANSFORMATION ())

Получается, что преобразование Filter Push-Down трансформацией не является и отключается только понижением значения optimizer_features_enable <= 8.1.7, или параметром _optimizer_filter_pushdown, добавленным лишь в 11.2.0.3

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

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

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 такие блоггеры, как: