Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Kozyrev Участник - экстремал
Вступление в Клуб: 03.09.2007
|
Чт Окт 08, 2009 14:52  План выполнения запросов |
|
Полезность: Нет оценки
|
Добрый день!
Подскажите как можно поменять план выполнения запроса в IBSO? |
|
 |
IBSO Профи
Вступление в Клуб: 20.08.2009
|
Чт Окт 08, 2009 14:58   |
|
Полезность: Нет оценки
|
Если вы по поводу кнопки План запросав Представлении, то она информативная и строится анализируя запрос. Меняете запрос - меняется план. |
|
 |
Kozyrev Участник - экстремал
Вступление в Клуб: 03.09.2007
|
Чт Окт 08, 2009 15:01   |
|
Полезность: Нет оценки
|
Нет, речь идет о выполнении запроса, выполняемого при вызове дистрибутивной операции "Исполнить" из типа "Финансовые распоряжения".
У нас выполнение этой операции происходит недопустимо долго. |
|
 |
IBSO Профи
Вступление в Клуб: 20.08.2009
|
Чт Окт 08, 2009 15:10   |
|
Полезность: Нет оценки
|
Надо посмотреть закладку Компиляция. Там свойства операции можно менять. Но обычно мы просим админа мониторить какой запорос именно "тянет" и если причину не можем отыскать и эта операция дистрибутивная, то просим ЦФТ разобраться, если операция наша, то сами отлаживаем и оптимизируем. |
|
 |
Kozyrev Участник - экстремал
Вступление в Клуб: 03.09.2007
|
Чт Окт 08, 2009 15:15   |
|
Полезность: Нет оценки
|
IBSO, ситуация такая, что операция дистрибутивная и в ЦФТ сказали что все хорошо и что проблема только у нас (хотя проблема есть у нас на двух базах: на боевой и тестовой).
Как такового администратора у нас нет. Пытаемся разобраться сами. |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Чт Окт 08, 2009 15:23   |
|
Полезность: Нет оценки
|
Попробуйте в Администратор словаря данных - Сессии посмотреть, какой select чаще или дольше висит. Потом вытащить его и посмотреть план. |
|
 |
Kozyrev Участник - экстремал
Вступление в Клуб: 03.09.2007
|
Чт Окт 08, 2009 15:25   |
|
Полезность: Нет оценки
|
Вот этот запрос:
Код: | SELECT /*+ INDEX(a1 IDX_Z#PLAN_OPER_COL_DATE) */ B1.ID, 'FACT_PLAN_OPER',
B1.COLLECTION_ID, '', B1.C_SUM, B1.C_FACT, '0'
FROM
Z#FACT_PLAN_OPER B1, Z#PLAN_OPER A1 WHERE A1.COLLECTION_ID = :B1 AND
A1.C_FACT_OPERS = B1.COLLECTION_ID AND A1.C_OPER IS NOT NULL ORDER BY
B1.COLLECTION_ID |
Вот его план:
Код: | Rows Row Source Operation
------- ---------------------------------------------------
6 TABLE ACCESS BY INDEX ROWID Z#PLAN_OPER (cr=1929811 pr=0 pw=0 time=10899744 us)
6808449 NESTED LOOPS (cr=440463 pr=0 pw=0 time=6840535 us)
212764 TABLE ACCESS BY INDEX ROWID Z#FACT_PLAN_OPER (cr=14933 pr=0 pw=0 time=425558 us)
212764 INDEX FULL SCAN IDX_Z#FACT_PLAN_OPER_COLL_ID (cr=1126 pr=0 pw=0 time=23 us)(object id 10234)
6595684 INDEX RANGE SCAN IDX_Z#PLAN_OPER_COL_DATE (cr=425530 pr=0 pw=0 time=1380604 us)(object id 13549) |
|
|
 |
IBSO Профи
Вступление в Клуб: 20.08.2009
|
Чт Окт 08, 2009 15:27   |
|
Полезность: Нет оценки
|
Ну да у нас тоже ок. Ну тогда может кто здесь что подскажет, или по договору на разовую работу поискать толкового админа, умеющего понять в базе что "тянет". |
|
 |
Kozyrev Участник - экстремал
Вступление в Клуб: 03.09.2007
|
Чт Окт 08, 2009 15:30   |
|
Полезность: Нет оценки
|
Нашли что нужно добавить hint ALL_ROWS в запрос. Получится вот так:
Код: | SELECT /*+ INDEX(a1 IDX_Z#PLAN_OPER_COL_DATE) ALL_ROWS */ B1.ID, 'FACT_PLAN_OPER',
B1.COLLECTION_ID, '', B1.C_SUM, B1.C_FACT, '0'
FROM
Z#FACT_PLAN_OPER B1, Z#PLAN_OPER A1 WHERE A1.COLLECTION_ID = :B1 AND
A1.C_FACT_OPERS = B1.COLLECTION_ID AND A1.C_OPER IS NOT NULL ORDER BY
B1.COLLECTION_ID;
|
После добавления запрос стал выполняться в разы быстрее!!!
Вопрос куда это вписать в IBSO? |
|
 |
IBSO Профи
Вступление в Клуб: 20.08.2009
|
Чт Окт 08, 2009 16:13   |
|
Полезность: Нет оценки
|
-- begin pl/sql
обычный текст PL
-- end pl/sql
Другое дело, что при накате все это исчезнет |
|
 |
r00st Эксперт
Вступление в Клуб: 14.09.2007
|
Чт Окт 08, 2009 16:42   |
|
Полезность: 1
|
1. Компилятор PL+ распознает хинты непосредственно в ввыражении.
2. Можно и принудительно перед запросом указать Код: | pragma hint ('+ INDEX(a1 IDX_Z#PLAN_OPER_COL_DATE) ALL_ROWS'); |
Однако, лучше разобраться в причине, пересобрать статистику по таблицам, индексы проверить. |
|
 |
Kozyrev Участник - экстремал
Вступление в Клуб: 03.09.2007
|
Пт Окт 09, 2009 09:14   |
|
Полезность: Нет оценки
|
Спасибо всем, кто откликнулся!
Добавили hint. Все работает как надо! |
|
 |
|