Текущее время: Вс, июл 13 2025, 23:24

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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