Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Про bind peeking / 25 сообщений из 107, страница 1 из 5
27.11.2017, 08:53
    #39559782
туплю_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
11gR2
Почему иногда оптимизатор тупо берет готовый план (сгенерированный изначально для bind совсем другого диапазона), не желая строить заново. Если же при пустом sql-кэше(когда нет для запроса готового плана в sga) задать эти же значения, то строит нормальный план.
Есть гистограммы, по которым однозначно можно видеть, что плохой план для таких значений bind не подходит. (очень неравномерное распределение).
Причины и чем можно бороться (помимо baselines-ов) -?
...
Рейтинг: 0 / 0
27.11.2017, 09:11
    #39559786
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
туплю_,

может для экономии сил и времени, не?
...
Рейтинг: 0 / 0
27.11.2017, 09:15
    #39559788
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
AFAIR, в 11g peeking выполнялся только при построении плана.
А план строился только если не имелось готового.
Как следствие, если первый вызов шел с неудачным значением bind - то остальные вызовы того же SQL работали неэффективно.
Отсюда и легендарный способ борьбы с этим пагубным явлением:
Код: plsql
1.
comment on table <таблица из запроса> is 'FAST=TRUE... or something like this'
...
Рейтинг: 0 / 0
27.11.2017, 09:21
    #39559789
опс.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
DВАможет для экономии сил и времени, не?
а как же adaptive cursor и проч. ?
...
Рейтинг: 0 / 0
27.11.2017, 09:26
    #39559790
опс.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
asc может не работать, если в запросе есть хинты. также может не работать, вроде если используется like и некот.другие операторы.
Тогда что первое попалось, то и будет жевать.
Один из вариантов лечения - запулить хинт BIND_AWARE
...
Рейтинг: 0 / 0
27.11.2017, 09:28
    #39559792
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
опс.DВАможет для экономии сил и времени, не?
а как же adaptive cursor и проч. ?оно только с третьего выполнения начинает работать, да и то как мы знаем не всегда
...
Рейтинг: 0 / 0
27.11.2017, 09:29
    #39559793
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
andrey_anonymousAFAIR, в 11g peeking выполнялся только при построении плана.afair, bind peeking появился в 10ке
...
Рейтинг: 0 / 0
27.11.2017, 09:37
    #39559795
туплю_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
xtenderоно только с третьего выполнения начинает работать, да и то как мы знаем не всегда
не всегда - это при каких ситуациях ?
...
Рейтинг: 0 / 0
27.11.2017, 09:39
    #39559797
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
опс.DВАможет для экономии сил и времени, не?
а как же adaptive cursor и проч. ?
не сильно удачная попытка найти золотую серединку между необходимостью лишний раз парсить и риском подхватить не оптимальный план
...
Рейтинг: 0 / 0
27.11.2017, 09:46
    #39559799
туплю_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
опс....также может не работать, вроде если используется like и некот.другие операторы.
т.е. если используется like, то единственный выход - искать один усредненный план, относительно подходящий для всех ситуаций и фиксить его через baselines ?
...
Рейтинг: 0 / 0
27.11.2017, 10:32
    #39559825
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
xtenderandrey_anonymousAFAIR, в 11g peeking выполнялся только при построении плана.afair, bind peeking появился в 10ке 700067

Oracle9i Database Performance Tuning Guide and Reference
Release 2 (9.2)
Peeking of User-Defined Bind Variables
...
Рейтинг: 0 / 0
27.11.2017, 10:42
    #39559834
туплю_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
Elic, что вы скажете по самой этой ситуации - как вы поступаете ?

Получается, что нужны два разных плана, но adaptive не срабатывает, как понимаю из-за использования like
...
Рейтинг: 0 / 0
27.11.2017, 10:46
    #39559839
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
туплю_Elic, что вы скажете по самой этой ситуации - как вы поступаете ?Не парюсь. В adhoc запросах 100%-го счастья всё равно не бывает. А штатные запросы просто не должны зависеть от такой фигни.
...
Рейтинг: 0 / 0
27.11.2017, 11:41
    #39559885
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
туплю_,

к сожалению, в большинстве случаев это означает, что разработчики неправильно понимают советы по использованию биндов. Очень распространена ошибка, когда делают запросы типа:
select * from tab where type=:type ..., при том что заранее знают, что значений TYPE очень ограниченное количество и по ним будет большой перекос. В таких случаях просто вместо бинда надо использовал литерал
...
Рейтинг: 0 / 0
27.11.2017, 11:51
    #39559893
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
xtenderВ таких случаях просто вместо бинда надо использовал литералЛитералы - несопровождаемое зло.
...
Рейтинг: 0 / 0
27.11.2017, 11:58
    #39559897
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
ElicЛитералы - несопровождаемое зло.бред.
...
Рейтинг: 0 / 0
27.11.2017, 12:14
    #39559907
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
xtenderElicЛитералы - несопровождаемое зло.бред.Взаимно. Как и антогонизм "разработчик vs админ".
...
Рейтинг: 0 / 0
27.11.2017, 12:26
    #39559913
туплю_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
Как и антогонизм "разработчик vs админ".

Вот и что делать админу в данной ситуации, как принудительно заставить adaptive к конкретным запросам цеплять? )
...
Рейтинг: 0 / 0
27.11.2017, 12:31
    #39559917
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
туплю_,
подобрать и закрепить компромисный план, пригодный для любого диапазона.

ну или ждать окончательной эволюции оптимайзера в самообучающийся искусственный интеллект )))
...
Рейтинг: 0 / 0
29.11.2017, 10:34
    #39561093
fortnet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
xtenderElicЛитералы - несопровождаемое зло.бред.

Присоединюсь.
Пришлось даже написать код по замене параметров на их значения перед выполнением ( отчеты ) .
...
Рейтинг: 0 / 0
29.11.2017, 11:40
    #39561139
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
fortnetxtenderпропущено...
бред.Присоединюсь.И тем не менее, у меня разработчик будет получать пенделей за такое в PL/SQL :
Код: plsql
1.
where account_type = 100500
...
Рейтинг: 0 / 0
29.11.2017, 12:41
    #39561196
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
Виталий, а за такое?

Код: plsql
1.
where account_type = pkg_const.ACC_TYPE_VIP
...
Рейтинг: 0 / 0
29.11.2017, 12:44
    #39561201
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
envВиталий, а за такое?

Код: plsql
1.
where account_type = pkg_const.ACC_TYPE_VIP

Код: plsql
1.
where account_type = pkg_const.ACC_100500
...
Рейтинг: 0 / 0
29.11.2017, 12:50
    #39561207
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
env
Код: plsql
1.
where account_type = pkg_const.ACC_TYPE_VIP

+
AmKad
Код: plsql
1.
where account_type = pkg_const.ACC_100500

-
...
Рейтинг: 0 / 0
29.11.2017, 13:20
    #39561234
Vint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про bind peeking
Elic,
pkg_const.ACC_TYPE_VIP функция или константа?
и если константа как тестировать сложный запрос в котором штук 50 этих констант и где то в запросе есть ошибка? каждый раз руками сидеть заменять константы на литералы прежде чем приступить к тестированию?

xtender,
+ константы на моей памяти в проекте редко меняются. хотя может и есть извращенцы.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Про bind peeking / 25 сообщений из 107, страница 1 из 5
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]