Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Отпилить бы РУЛЬ  [new]
Olzirg
Member

Откуда:
Сообщений: 8
Посоветуйте, можно ли подменить план запроса, изначально выполняющегося с хинтом? Приложение отсылает базе запрос вида select /*+ RULE*/ … Без этого руля запрос выполняется мгновенно, в реальном приложении – несколько минут.
У Кайта хорошо рассмотрено, как создать подсказки для запросов, изначально написанных без хинтов, но вот как поступить в моем случае – не сказано ни слова. Вообще возможность есть какая-то?
13 апр 07, 15:42    [4018739]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
версию не указали (если 10g - см. query rewrite )
13 апр 07, 15:49    [4018818]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
Olzirg
Member

Откуда:
Сообщений: 8
Девяточка,к сожалению. 9.2.0.7
13 апр 07, 15:50    [4018829]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
тогда, можно попробовать (там, где можно:)
select --+ all_rows
* from (
select --+ rule
..
13 апр 07, 15:54    [4018861]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
HX
Member

Откуда: Moscow
Сообщений: 2454
You have to sawn the hands who used this hint.
13 апр 07, 15:56    [4018880]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
HX
Member

Откуда: Moscow
Сообщений: 2454
orawish
версию не указали (если 10g - см. query rewrite )

The Rule optimizer is deprecated in 10g by default.
13 апр 07, 15:58    [4018906]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
Olzirg
Member

Откуда:
Сообщений: 8
orawish
тогда, можно попробовать (там, где можно:)
select --+ all_rows
* from (
select --+ rule
..

Не понял вашу мысль. В том то и дело, что менять запрос я не могу, он шлется клиентом.

HX
You have to sawn the hands who used this hint.

Полностью согласен. Отдельный круг ада надо бы организовать по отпилу, отрыву и ломанию рук разработчикам ЭТОГО. Просто кладезь неэффективности и глупости.
13 апр 07, 16:14    [4019057]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63937
Блог
Olzirg
Не понял вашу мысль. В том то и дело, что менять запрос я не могу, он шлется клиентом.

А не решится ли проблема тривиальным изменением байта-двух в клиенте?
13 апр 07, 16:18    [4019099]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Olzirg
..Не понял вашу мысль. В том то и дело, что менять запрос я не могу, он шлется клиентом..

Да есть совтульки такие, которые на клиенте отсылаемый трафик перехватывают и могут подправить. Рекламу им делать не хочу, да и внятного опыта по их эксплуатации не имею.
Но, захотите - найдёте..
13 апр 07, 16:19    [4019116]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
Olzirg
Member

Откуда:
Сообщений: 8
Единственное, что приходит в голову – создать шаблон запроса без хинта, он получится с верным планом. Потом ручками подменить в outln.ol$ текст запроса на верный. Но коробит от одной мысли руками править. Або крамола. Кто-нибудь делал так? Выжившие есть?
13 апр 07, 16:20    [4019130]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
SamAGen
Member

Откуда:
Сообщений: 23
Oracle9i Database Performance Tuning Guide and Reference
Release 2 (9.2)
Part Number A96533-01

In general, use the cost-based approach. Oracle Corporation is continually improving the CBO, and new features require it. The rule-based approach is available for backward compatibility with legacy applications.

The CBO determines which execution plan is most efficient by considering available access paths and by factoring in information based on statistics for the schema objects (tables or indexes) accessed by the SQL statement. The CBO also considers hints, which are optimization suggestions placed in a comment in the statement.


Надо собрать статистику хотя бы по одной таблице из запроса
13 апр 07, 16:23    [4019139]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
HX
Member

Откуда: Moscow
Сообщений: 2454
Olzirg
Единственное, что приходит в голову – создать шаблон запроса без хинта, он получится с верным планом. Потом ручками подменить в outln.ol$ текст запроса на верный. Но коробит от одной мысли руками править. Або крамола. Кто-нибудь делал так? Выжившие есть?

Im
13 апр 07, 16:23    [4019149]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
HX
The Rule optimizer is deprecated in 10g by default.

Да, он говорит (типа) и я тоже CBO, но, жив, гадёныш
Присоединен к:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> explain plan for
  2  select --+ rule
  3     A.name
  4    ,C.blocks
  5    ,C.extents
  6  from sys.obj$ A
  7      ,sys.tab$ B
  8      ,sys.seg$ C
  9  where A.owner# = (select user# from sys.user$ where name = user)
 10    and B.obj#   = A.obj#
 11    and C.file#  = B.file#
 12    and C.block# = B.block#
 13  ;
SQL> select * from table(dbms_xplan.display);
---------------------------------------------------
| Id  | Operation                       | Name    |
---------------------------------------------------
|   0 | SELECT STATEMENT                |         |
|   1 |  NESTED LOOPS                   |         |
|   2 |   NESTED LOOPS                  |         |
|   3 |    TABLE ACCESS FULL            | SEG$    |
|   4 |    TABLE ACCESS BY INDEX ROWID  | OBJ$    |
|*  5 |     INDEX RANGE SCAN            | I_OBJ2  |
|   6 |      TABLE ACCESS BY INDEX ROWID| USER$   |
|*  7 |       INDEX UNIQUE SCAN         | I_USER1 |
|*  8 |   TABLE ACCESS CLUSTER          | TAB$    |
|*  9 |    INDEX UNIQUE SCAN            | I_OBJ#  |
---------------------------------------------------

Note
-----
   - rule based optimizer used (consider using cbo)

SQL> explain plan for
  2  select
  3     A.name
  4    ,C.blocks
  5    ,C.extents
  6  from sys.obj$ A
  7      ,sys.tab$ B
  8      ,sys.seg$ C
  9  where A.owner# = (select user# from sys.user$ where name = user)
 10    and B.obj#   = A.obj#
 11    and C.file#  = B.file#
 12    and C.block# = B.block#
 13  ;

------------------------------------------------------------------------------------------
| Id  | Operation                      | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT               |         |  1777 |   104K|   224   (3)| 00:00:03 |
|*  1 |  HASH JOIN                     |         |  1777 |   104K|   223   (3)| 00:00:03 |
|   2 |   NESTED LOOPS                 |         |  1777 | 79965 |   192   (3)| 00:00:03 |
|*  3 |    TABLE ACCESS FULL           | OBJ$    |  1931 | 61792 |   125   (3)| 00:00:02 |
|   4 |     TABLE ACCESS BY INDEX ROWID| USER$   |     1 |    15 |     1   (0)| 00:00:01 |
|*  5 |      INDEX UNIQUE SCAN         | I_USER1 |     1 |       |     0   (0)| 00:00:01 |
|   6 |    TABLE ACCESS CLUSTER        | TAB$    |     1 |    13 |     1   (0)| 00:00:01 |
|*  7 |     INDEX UNIQUE SCAN          | I_OBJ#  |     1 |       |     0   (0)| 00:00:01 |
|   8 |   TABLE ACCESS FULL            | SEG$    |  5076 | 76140 |    30   (0)| 00:00:01 |
------------------------------------------------------------------------------------------
13 апр 07, 16:24    [4019161]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7126
Категорическое утро
Если нет никаких рычагов воздействия на авторов вышеуказанного клиента, то вариантов Вашей реакции может быть несколько:
1) Предложить нецензурно начальнику самому сопровождать данный опус, и культурно подать заявление об уходе.
2) Занять бюрократическую оборону, начав плодить немеренное количество официальных документов с техническим и политическим обоснованием невозможности улучшения поведения данного приложения.
3) В качестве ВРЕДНОГО совета, можно предложить отхачить такое приложение. Для этого, Физически, бинарным редактором поправив нужный select непосредственно в .exe или .dll файлах. При этом, если вы не хотите осложнять жизнь вашим коллегам, необходимо налабать документ с причинами грубого вмешательства в частную жизнь, и довести наличие данного докумета начальству, оформив это как штатный этап разворачивания приложения.

Удачи однако нам всем...
13 апр 07, 16:30    [4019201]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
Olzirg
Member

Откуда:
Сообщений: 8
HX

Im

Бесспорно) Молод и зелен) Да еще и пятница 13 на мозг давит…

Vadim Lejnin
Категорическое утро
Если нет никаких рычагов воздействия на авторов вышеуказанного клиента, то вариантов Вашей реакции может быть несколько:
1) Предложить нецензурно начальнику самому сопровождать данный опус, и культурно подать заявление об уходе.
2) Занять бюрократическую оборону, начав плодить немеренное количество официальных документов с техническим и политическим обоснованием невозможности улучшения поведения данного приложения.
3) В качестве ВРЕДНОГО совета, можно предложить отхачить такое приложение. Для этого, Физически, бинарным редактором поправив нужный select непосредственно в .exe или .dll файлах. При этом, если вы не хотите осложнять жизнь вашим коллегам, необходимо налабать документ с причинами грубого вмешательства в частную жизнь, и довести наличие данного докумета начальству, оформив это как штатный этап разворачивания приложения.

Удачи однако нам всем...

Хм. Из-за одного руля с работы тикать? Нда, категорично. Не, бегство – не наш выбор) Да и бумагомарательством заниматься не выход. С третьего варианта начал еще до обращения на форум,но клиент запакован чем-то типа аспака.
13 апр 07, 16:43    [4019339]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
HX
Member

Откуда: Moscow
Сообщений: 2454
orawish
HX
The Rule optimizer is deprecated in 10g by default.

Да, он говорит (типа) и я тоже CBO, но, жив, гадёныш

Ooops... It's so funny!
13 апр 07, 16:54    [4019420]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
DВА
Member

Откуда:
Сообщений: 5439
_optimizer_ignore_hints
13 апр 07, 17:15    [4019563]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
HX
Member

Откуда: Moscow
Сообщений: 2454
DВА
_optimizer_ignore_hints

It's present in 10g.
13 апр 07, 17:53    [4019894]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
DВА
Member

Откуда:
Сообщений: 5439
угу, не посмотрела
13 апр 07, 18:03    [4019949]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
.....
Guest
Olzirg
Единственное, что приходит в голову – создать шаблон запроса без хинта, он получится с верным планом. Потом ручками подменить в outln.ol$ текст запроса на верный. Но коробит от одной мысли руками править. Або крамола. Кто-нибудь делал так? Выжившие есть?


Делали, помогает. Ничего крамольного в этом нет
13 апр 07, 18:08    [4019978]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
Romanzek
Member

Откуда: Red Soft
Сообщений: 85
да, аутлайн должен помочь по идее
13 апр 07, 23:12    [4020694]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18337
Romanzek
да, аутлайн должен помочь по идее

Я даже больше скажу - помогает ;)
14 апр 07, 22:12    [4021966]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18337
Olzirg
Единственное, что приходит в голову – создать шаблон запроса без хинта, он получится с верным планом. Потом ручками подменить в outln.ol$ текст запроса на верный. Но коробит от одной мысли руками править. Або крамола. Кто-нибудь делал так? Выжившие есть?

Это метода от восьмерки. В девятке струмент сей покультурнее оформлен.
14 апр 07, 22:14    [4021968]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
HX
Member

Откуда: Moscow
Сообщений: 2454
andrey_anonymous
Olzirg
Единственное, что приходит в голову – создать шаблон запроса без хинта, он получится с верным планом. Потом ручками подменить в outln.ol$ текст запроса на верный. Но коробит от одной мысли руками править. Або крамола. Кто-нибудь делал так? Выжившие есть?

Это метода от восьмерки. В девятке струмент сей покультурнее оформлен.

Андрей, извини за непробиваемую тупость, но разве в 9i не надо чтобы шаблок совпал по hash_value ;-)
14 апр 07, 23:02    [4022012]     Ответить | Цитировать Сообщить модератору
 Re: Отпилить бы РУЛЬ  [new]
Толич4
Guest
Ваш случай

тут теория

Формирование хранимых шаблонов в Oracle 9
16 апр 07, 10:59    [4024269]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить