Текущее время: Ср, июл 16 2025, 07:08

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: План разбора не соответствует hint
СообщениеДобавлено: Ср, мар 13 2013, 15:49 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Добрый день!

Возникла след. проблема: есть запрос объединяющий 2 таблицы. Т.к. таблицы большие, а план разбора не устраивал(оптимизатор по самой большой таблице решил делать фуллскан), решил поюзать хинт. На тестовой базе все нормально, план разбора теперь соответствует хинту, а вот на продуктивной базе - план разбора не меняется.
Кто-нибудь с таким сталкивался? В чем может быть дело?

ЗЫ: база оракл. статистика свежая

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: План разбора не соответствует hint
СообщениеДобавлено: Ср, мар 13 2013, 16:26 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Запросто.
0. Ошибка синтаксиса в хинте. В таком случае просто игнор и никаких ошибок.
1. Стоит флаг игнорить хинты: _optimizer_ignore_hints.
2. Оптимизатор у Orcale больно продуманный, он может заигнорить и просто так. Если сочтет хинт "плохим".


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: План разбора не соответствует hint
СообщениеДобавлено: Ср, мар 13 2013, 16:38 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Проблема решена.
Суть: хинты - вещь СУБД, и зависят от нее. Если используются алиасы на таблицу, в хинтах следует использовать не название таблиц, а алиасы. САП при переводе из OpenSQL в оракловый проставляет свои алиас. Если использовать их в хинтах - все работает.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: План разбора не соответствует hint
СообщениеДобавлено: Ср, мар 13 2013, 17:37 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Если запрос был одинаковым в тесте и проде (т.е. с ошибкой синтаксиса в хинте) - то не разумнее ли отказаться от хинта совсем? 8)


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: План разбора не соответствует hint  Тема решена
СообщениеДобавлено: Ср, мар 13 2013, 19:26 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Нет, к сожалению, отказаться от хинта нельзя.
Запрос-то был одинаковый, но изначально из-за алиасов хинт был не верным. Поэтому в тесте желаемый план запроса получался просто самим оптимизатором(данных там миллион раз меньше), а в проде - просто не получался. После того как я ввел правильный хинт, я получил и нужный план выполнения и нужную производительность(я уже проверил, выигрыш очень большой: без хинта я за 3 часа не дождался результата, с хинтом - запрос отыграл за 10 минут (да кошмар, но там задача такая и такие объемы) ) .

Зы: да, хинты нужно юзать аккуратно, но в моей задаче они в тему.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: План разбора не соответствует hint
СообщениеДобавлено: Чт, мар 14 2013, 10:04 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Кодер, таки оптимизатор в ORACLE реально оптимизатор. Статистика в проде точно актуальная? Не верю я что на большем объеме данных при актуальной статистике и одинаковом запросе оптимизатор предпочел FULL SCAN.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: План разбора не соответствует hint
СообщениеДобавлено: Чт, мар 14 2013, 11:38 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Пономарев Артем, я вопросами религии не занимаюсь. Тесты показали именно то, что я говорю. Ну и вообще, немного демагогии: если оптимизатор идеален, зачем оре было делать такую конструкцию как хинты?

ЗЫ: если что, размер бедствия был такой: таблица1 - несколько десятков миллионов записей, подчиненная таблица(выборка по первичному ключу) - более миллиарда записей(вот она-то и бралась по FULL_SCAN).

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: План разбора не соответствует hint
СообщениеДобавлено: Чт, мар 14 2013, 12:00 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Вопрос не в религии. Вопрос в интересном случае. Мне банально любопытно.
Можете план запроса выложить, если не сложно? Кривой, конечно же.

З.Ы.: Хинты нужны в сложных случаях. Данный - тривиальный. Потому и интересно на план взглянуть. Если оно действительно с актуальной статистикой так.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: План разбора не соответствует hint
СообщениеДобавлено: Чт, мар 14 2013, 12:16 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
То что ставит оптимизатор
Цитата:
| 0 | SELECT STATEMENT
| 1 | HASH UNIQUE
|* 2 | HASH JOIN
|* 3 | INDEX RANGE SCAN | TAB1~0
|* 4 | TABLE ACCESS FULL| TAB2


В дереве это выглядит как
Цитата:
| 4 | HASH UNIQUE
|* 3 | HASH JOIN
|* 1 | INDEX RANGE SCAN | TAB1~0
|* 2 | TABLE ACCESS FULL| TAB2


То что получилось у меня после хинта
Цитата:
| 0 | SELECT STATEMENT
| 1 | HASH UNIQUE
| 2 | NESTED LOOPS
|* 3 | INDEX RANGE SCAN | TAB1~0
|* 4 | TABLE ACCESS BY INDEX ROWID| TAB2
|* 5 | INDEX UNIQUE SCAN | TAB2~0


дерево соответственно
Цитата:
| 5 | HASH UNIQUE
| 4 | NESTED LOOPS
|* 1 | INDEX RANGE SCAN | TAB1~0
|* 3 | TABLE ACCESS BY INDEX ROWID| TAB2
|* 2 | INDEX UNIQUE SCAN | TAB2~0

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: План разбора не соответствует hint
СообщениеДобавлено: Чт, мар 14 2013, 12:27 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Спасибо!


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB