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

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

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

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

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

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

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

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

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

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

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

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

xtender,
+ константы на моей памяти в проекте редко меняются. хотя может и есть извращенцы.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561251
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vintpkg_const.ACC_TYPE_VIP функция или константа?Название пакета как бы намекает.
Vintкак тестировать сложный запрос в котором штук 50 этих констант и где то в запросе есть ошибка? каждый раз руками сидеть заменять константы на литералы прежде чем приступить к тестированию?
Код: plsql
1.
2.
3.
4.
begin
  open :c for …;
end;
/
...
Рейтинг: 0 / 0
Про bind peeking
    #39561255
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, не надо биться ради очередного ROT.
Не существует плохих инструментов, существует неквалифицированное применение.
Литералов тоже касается.
В Ad-Hoc - они вполне уместны.
В продуктивном коде - тоже уместны иногда, но гораздо реже - это вопрос code reveiw и мотивировки.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561285
fortnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousКоллеги, не надо биться ради очередного ROT.
Не существует плохих инструментов, существует неквалифицированное применение.
Литералов тоже касается.
В Ad-Hoc - они вполне уместны.
В продуктивном коде - тоже уместны иногда, но гораздо реже - это вопрос code reveiw и мотивировки.
Это вопрос производительности выполнения запроса, не больше и не меньше.
Все остальные предпочтения опциональны.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561306
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fortnetandrey_anonymousКоллеги, не надо биться ради очередного ROT.
Не существует плохих инструментов, существует неквалифицированное применение.
Литералов тоже касается.
В Ad-Hoc - они вполне уместны.
В продуктивном коде - тоже уместны иногда, но гораздо реже - это вопрос code reveiw и мотивировки.
Это вопрос производительности выполнения запроса, не больше и не меньше.
Все остальные предпочтения опциональны.Выбор, конечно, есть всегда, но бывают случаи когда
либо используем красивые именованные константы и жирные хинты для сложных запросов
либо прибиваем план прямо в библиотечном кеше
либо "несопровождаемое литеральное зло"
Первые два пути просто образец сопровождаемости. :)
...
Рейтинг: 0 / 0
Про bind peeking
    #39561326
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopлибо используем красивые именованные константы и жирные хинты для сложных запросовНу конечно, только "и". Об чём тут говорить.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561339
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicdbms_photoshopлибо используем красивые именованные константы и жирные хинты для сложных запросовНу конечно, только "и". Об чём тут говорить.Написано же
dbms_photoshopбывают случаи когдаИли не приходит на ум ни одного случая?
...
Рейтинг: 0 / 0
Про bind peeking
    #39561343
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicfortnetпропущено...
Присоединюсь.И тем не менее, у меня разработчик будет получать пенделей за такое в PL/SQL :
Код: plsql
1.
where account_type = 100500


Не думал что когда нибудь это скажу: ++++
...
Рейтинг: 0 / 0
Про bind peeking
    #39561345
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopИли не приходит на ум ни одного случая?Т.е. исключение? - Которое подтверждает правило.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561348
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если значение константы никогда не меняется, то зачем она нужна? А если значение константы меняется, то какая же это константа?
...
Рейтинг: 0 / 0
Про bind peeking
    #39561350
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,

Чтобы написать числа Пи, e, постоянную Планка, число Авогадро и прочие "константы" с точностью до ограничения типа данных один раз, а не заставлять разработчиков помнить его до нужного знака, например.

Предупреждая твой вопрос, нет, не приходилось использовать.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561351
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Самая жесть это запросы с кучей условий типа
(:a is null or A=:a)
and (:b is null or B=:b)
and (:c is null or C=:c)
and...
...
Рейтинг: 0 / 0
Про bind peeking
    #39561352
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
И вообще, пусть запрос хоть идеально сопровождаемый, но если он не выполняется за требуемое время, то в топку его...
...
Рейтинг: 0 / 0
Про bind peeking
    #39561355
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtender,

Согласен. Пусть пользователь вообще не получает никаких данных.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561359
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Чего я только не видел:
:yes :no :zero :sysdate :maxNNN(где NNN - это захардкоденные максимальные значения притворяющиеся бесконечными, типа date'9999-12-31') ...
...
Рейтинг: 0 / 0
Про bind peeking
    #39561360
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
AmKadxtender,

Согласен. Пусть пользователь вообще не получает никаких данных.написать быстрый не судьба?
...
Рейтинг: 0 / 0
Про bind peeking
    #39561362
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderИ вообще, пусть запрос хоть идеально сопровождаемый, но если он не выполняется за требуемое время, то в топку его...Всё так плохо, что любой bind укладывает сервак на лопатки?
...
Рейтинг: 0 / 0
Про bind peeking
    #39561364
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderСамая жесть это запросы с кучей условий типа
(:a is null or A=:a)
and (:b is null or B=:b)
and (:c is null or C=:c)
and...
и следом
xtenderИ вообще, пусть запрос хоть идеально сопровождаемый, но если он не выполняется за требуемое время, то в топку его...
А разве bind в ряде случаев не повышает производительность?
...
Рейтинг: 0 / 0
Про bind peeking
    #39561367
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Elic,

в моей практике было множество случаев, когда такую "сопровождаемую" дребедень ускорял с 4 часов до 1-2 минут легкой модификацией в динамику где часть важнейших биндов клеилась литералами, остальное оставалось биндами
...
Рейтинг: 0 / 0
Про bind peeking
    #39561368
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderнаписать быстрый не судьба?Зависит от некоторых факторов, например, что такое "быстрый" и "требуемое время".
...
Рейтинг: 0 / 0
Про bind peeking
    #39561370
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
XMLer,

что за идиотский вопрос? прочитай мои ответы и подумай к чему ты его задал
...
Рейтинг: 0 / 0
Про bind peeking
    #39561377
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
AmKad,

То есть ты ее догадываешься, что это зависит от задачи? Тебе нравится стоять в очередях? тебе приятнее чтобы перевод со счета на счет занимал милисекундв или дни? а гуглопоиск или загрузка сайта?
...
Рейтинг: 0 / 0
Про bind peeking
    #39561378
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderв моей практике было множество случаев, когда такую "сопровождаемую" дребедень ускорял с 4 часов до 1-2 минут легкой модификацией в динамику где часть важнейших биндов клеилась литералами, остальное оставалось биндамиТак может архитектор виноват?
...
Рейтинг: 0 / 0
Про bind peeking
    #39561381
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderв моей практике было множество случаев, когда такую "сопровождаемую" дребедень ускорял с 4 часов до 1-2 минут легкой модификацией в динамику где часть важнейших биндов клеилась литералами, остальное оставалось биндами
А можно пример в студию? Желательно такой пример, который бы не провоцировал назвать архитектора БД чудаком, пытающимся поженить ужа с ежом.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561382
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderзависит отЕдинственный правильный посыл.
xtenderТебе нравится стоять в очередях? тебе приятнее чтобы перевод со счета на счет занимал милисекундв или дни? а гуглопоиск или загрузка сайта?И сколько OLTP-запросов ты полечил "с 4 часов до 1-2 минут"?
...
Рейтинг: 0 / 0
Про bind peeking
    #39561387
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Elicxtenderв моей практике было множество случаев, когда такую "сопровождаемую" дребедень ускорял с 4 часов до 1-2 минут легкой модификацией в динамику где часть важнейших биндов клеилась литералами, остальное оставалось биндамиТак может архитектор виноват?покажи сопровождаемый код для or-ов
...
Рейтинг: 0 / 0
Про bind peeking
    #39561389
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderXMLer,

что за идиотский вопрос? прочитай мои ответы и подумай к чему ты его задал

Прочитал. Ты про OLTP слыхал? Это такие базы которые выполняют много-много запросов в секунду, поэтому на них тебе придется читать столь нелюбимые тобой запросы с множеством bindов в where кляузе
...
Рейтинг: 0 / 0
Про bind peeking
    #39561392
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
XMLer,

просто покажи код на своей базе...
...
Рейтинг: 0 / 0
Про bind peeking
    #39561394
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Elic,

Ты всерьез считаешь ,что твой кол идеально сопровождаемый и быстрейший?
...
Рейтинг: 0 / 0
Про bind peeking
    #39561396
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ElicИ сколько OLTP-запросов ты полечил "с 4 часов до 1-2 минут"?и что тебе даст количество?
...
Рейтинг: 0 / 0
Про bind peeking
    #39561397
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderТо есть ты ее догадываешься, что это зависит от задачи?Ну так ведь не только от задачи. Если вдруг понадобилось выдать отчет, показывающий, сколько клиентов купили айфон, а потом в течение полугода apple watch всю историю работы розничной сети, то кто-то и два часа подождать может, а кому-то и пять минут может показаться "долго".
...
Рейтинг: 0 / 0
Про bind peeking
    #39561398
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderXMLer,

просто покажи код на своей базе...
Ну вот, сначала рассказывал про чудеса а после слился, переведя стрелки.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561399
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderElicИ сколько OLTP-запросов ты полечил "с 4 часов до 1-2 минут"?и что тебе даст количество?
И еще раз слился
...
Рейтинг: 0 / 0
Про bind peeking
    #39561402
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderТы всерьез считаешьElicxtenderзависит отЕдинственный правильный посыл.
xtenderбыстрейший? Где я так посчитал?

xtenderElicИ сколько OLTP-запросов ты полечил "с 4 часов до 1-2 минут"?и что тебе даст количество?Это был скорее риторический вопрос. Потому что подразумевающийся ответ - 0. Так как не бывает OLTP-запросов в 4 часа, точно так же, как никому не нужны OLTP-запросы в 1 минуту.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561403
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
AmKadxtenderТо есть ты ее догадываешься, что это зависит от задачи?Ну так ведь не только от задачи. Если вдруг понадобилось выдать отчет, показывающий, сколько клиентов купили айфон, а потом в течение полугода apple watch всю историю работы розничной сети, то кто-то и два часа подождать может, а кому-то и пять минут может показаться "долго".вот ты странный... сам показываешь, что зависит от задачи, а от меня ждешь конкретной цифры с точностью до мс?
...
Рейтинг: 0 / 0
Про bind peeking
    #39561404
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicdbms_photoshopИли не приходит на ум ни одного случая?Т.е. исключение? - Которое подтверждает правило.Переходя к конкретике. Допустим есть дизайн
Код: plsql
1.
2.
3.
4.
5.
6.
7.
create table ttt
(
   key       number not null,
   value     varchar2(240) not null,
   created   date not null,
   deleted   date not null
)

При этом для активных записей в deleted указывается date '9999-12-31'
Альтернативным дизайном может быть nullable deleted. Для обоих есть плюсы и минусы и даже где-то у Льюиса была заметка, что он склоняется к nullable.
Отдельно можно разводить срач по поводу наличия гистограммы по deleted.
Можно приводить иные примеры сильно скошенных распределений, но остановимся на этом.
То есть, используется not null поле deleted, соответсвенно фильтр по активным записям выглядит deleted = date '9999-12-31'.
Активных записей 99.999%.
95+% запросов работают с именоваными константами (но мы то понимаем, что этот процент зависит не только от самого запроса, а еще от того какой бинд первым пикнулся).

И вот тут возникает вопрос либо мы пишем что-то типа
Код: plaintext
select * from ttt where deleted = с_active
либо всегда используем литерал
Код: plaintext
select * from ttt where deleted = date '9999-12-31'
Как раз в целях согласованности и сопровождаемости.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561405
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ElicЭто был скорее риторический вопрос. Потому что подразумевающийся ответ - 0. Так как не бывает OLTP-запросов в 4 часа, точно так же, как никому не нужны OLTP-запросы в 1 минуту.так я и не ограничивал себя до OLTP в конкретно этой фразе, но неужели ты думаешь что я мало ускорил OLTP запросов?
...
Рейтинг: 0 / 0
Про bind peeking
    #39561406
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
XMLerxtenderXMLer,

что за идиотский вопрос? прочитай мои ответы и подумай к чему ты его задал

Прочитал. Ты про OLTP слыхал? Это такие базы которые выполняют много-много запросов в секунду, поэтому на них тебе придется читать столь нелюбимые тобой запросы с множеством bindов в where кляузето есть про skewed data ты так и не осилил? иди поучись-почитай что-нибудь, поспрашивай у старших товарищей...
...
Рейтинг: 0 / 0
Про bind peeking
    #39561407
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderот меня ждешь конкретной цифры с точностью до мс?Нет, я хочу сказать, в оценках "быстро" и "долго" есть еще и субъективная составляющая.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561411
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
AmKadxtenderот меня ждешь конкретной цифры с точностью до мс?Нет, я хочу сказать, в оценках "быстро" и "долго" есть еще и субъективная составляющая.omg...
...
Рейтинг: 0 / 0
Про bind peeking
    #39561412
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtender,
Я не сомневаюсь в твоем громадном опыте, но попробуй перечитать это с точки зрения разработчика OLTP
...
Рейтинг: 0 / 0
Про bind peeking
    #39561414
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще очень увлекательно когда проект работает годами,
все дружно используют именованые константы,
есть тонны кода и допустим такой примитивный запросик
Код: plsql
1.
2.
3.
4.
function get_active
...
  select * from ttt where deleted = c_active
...



Со временем появляется функция
Код: plsql
1.
2.
3.
4.
function get_by_date(p date)
...
  select * from ttt where deleted = p
...



Очевидно они порождают одинаковые курсоры типа
Код: plaintext
SELECT * FROM TTT WHERE DELETED = :B

Потом так вышло, что выполнился разбор из get_by_date и этот план используется в get_active. Упс.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561415
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
XMLer,

тебе пока в эту тему вообще рано лезть. Вот когда поймешь о чем и что конкретно я говорю, тогда посмотрим...
...
Рейтинг: 0 / 0
Про bind peeking
    #39561416
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderно неужели ты думаешь что я мало ускорил OLTP запросов?Литералингом? Т.е. в данном случае - засиралингом SGA?
...
Рейтинг: 0 / 0
Про bind peeking
    #39561418
XMLer,

Прочти еще раз внимательнее о чем пишут xtender и photoshop. Ты не в теме спора.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561422
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopу Льюиса была заметка, что он склоняется к nullable.А я не склоняюсь, а просто всегда неизвестность обозначаю предназначенной для этого сущностью - null-ом. Соответственно, пример неудачный.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561425
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Elicзасиралингом SGA?а ты уверен, что готов об этом говорить? например, о количестве чайлдов порождаемых биндами сравнительно с 2-3 разными запросами по одному чайлду?
...
Рейтинг: 0 / 0
Про bind peeking
    #39561427
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicdbms_photoshopу Льюиса была заметка, что он склоняется к nullable.А я не склоняюсь, а просто всегда неизвестность обозначаю предназначенной для этого сущностью - null-ом. Соответственно, пример неудачный.Была попытка написать наиболее тривиальный пример с минимумом вводных.
Остальные яркие примеры сильно скошенных требуют дополнительной специфики, но как-то мало желания писать страницу текста,
чтоб потом человек с черно-белым мышлением сказал, что "этого не может быть ибо не может быть никогда".
...
Рейтинг: 0 / 0
Про bind peeking
    #39561430
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic...
Код: plsql
1.
2.
3.
4.
begin
  open :c for …;
end;
/


Представь что есть запрос хотя бы вот такой структуры:
Код: plsql
1.
2.
3.
4.
5.
with t1 as(select '1' dummy from dual where dummy = 'X')
,t2 as (select '1' dummy from t1 where dummy = '1')
,t3 as (select 'X' dummy from t2 where dummy = '1' and dummy in (select dummy from t1))
,t4 as (select '1' dummy from t3 where dummy = 'x' and dummy in (select dummy from t2))
select * from t4

только строк на 500. вполне реальный случай из вполне олтп системы. При твоем подходе сколько бы потребовалось раз писать open :c for …; для каждой части и переписывать запрос я даже боюсь представить. Ну или объясни, пожалуйста, как в таком запросе выделить часть запроса и быстро посмотреть результат.

xtender,
"покажи сопровождаемый код для or-ов" - хехе, тебе привет и спасибо от коллег)
...
Рейтинг: 0 / 0
Про bind peeking
    #39561433
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, хорош на ровном месте разводить пожар.
Саян НЕ говорит об OLTP и прочих коротких запросах, он говорит о выборках по skewed data.
Виталий НЕ говорит о репортинге и прочей ad-hoc статистике, он говорит о тщательно проработанном приложении, где литералы в коде - действительно зло с точки зрения сопровождения и развития системы.
Вы тупо о разном.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561436
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopчеловек с черно-белым мышлениемЧто-то и я тоже не вижу среди активных участников " серых ".
Проблемы нужно решать по мере их появления, а не бездумно везде тыкать литералы.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561437
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderElicзасиралингом SGA?а ты уверен, что готов об этом говорить? например, о количестве чайлдов порождаемых биндами сравнительно с 2-3 разными запросами по одному чайлду?А вот это уже уход в сторону.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561440
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vintкак в таком запросе выделить часть запроса и быстро посмотреть результатВряд ли удобство тестирование должно быть аргументом в пользу binds vs literals.
Более того, умные IDE (toad, pl/sql dev) позволяют удобно заменять переменные на :binds,
а для последних запоминать что было подставлено (для этого бинда ранее) и автоматически предлагать в окне диалога перед запуском.
Другое дело, что некоторые утверждают что все кроме sqlplus - дерьмо для жертв гуя, но это другая песня.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561441
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Elic,

У вас сегодня это массовое... перечитай все мои посты внимательно, не забывая о проблеме тс
...
Рейтинг: 0 / 0
Про bind peeking
    #39561443
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Elic,

В каком блин месте ты прочитал про "бездумно" и "везде"?
...
Рейтинг: 0 / 0
Про bind peeking
    #39561445
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicа не бездумно везде тыкать литералы.
Виталий, с биндами разве не то же самое?
Бездумное тыканье везде биндов ничуть не лучше.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561446
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VintНу или объясни, пожалуйста, как в таком запросе выделить часть запроса и быстро посмотреть результат.
Код: plsql
1.
2.
--select * from t4
select * from t2
...
Рейтинг: 0 / 0
Про bind peeking
    #39561447
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousКоллеги, хорош на ровном месте разводить пожар.Так скучно же на форуме, хоть какой-то огонек появился.

А я о чем говорю? Вижу был сделан вывод, бездумное тыкание литералов везде.
Ладно, вопрос был риторический.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561448
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderто есть про skewed data ты так и не осилил в 2005 столкнулся с этим в первый раз. Нашел тогда ответ у Кайта, что то про skewed data и гистограммы.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561454
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возвращаясь к проблеме ТС,
ТСЕсть гистограммы, по которым однозначно можно видеть, что плохой план для таких значений bind не подходит. (очень неравномерное распределение).
Причины и чем можно бороться (помимо baselines-ов) -?

Т.е. у ТС в чистом виде skewed data.
И bind peeking подкладывает ему жирную свинью.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561455
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,
я никак не могу сам для себя определиться...мне правда интересно как облегчить поддержку.
для старых олтп систем удобство сопровождения/тестирования иногда очень важно. и тут дело не в подмене литералов на бинды. а в использовании литералов или пакетных констант.
особенно когда в какой то момент тебе в трубку кричат что все сломалось и месяц не закрывается.. потому что на форме какое то значение потерялось.. и тебе срочно надо лезть в форму написанную 5 лет назад, доставать запрос и смотреть почему какая то цифра не подтянулась на форму и потом не передалась в расчёт.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561456
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,
самый просто путь конечно, выделить часть когда хорошо написано. а если лапша и подзапрос на подзапросе? понятно что можно переписать... но все относительно.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561457
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vint и тебе срочно надо лезть в форму написанную 5 лет назад, доставать запрос и смотреть
А там type = pkg_const.legacy_ussr_finplan_5year_in_one_100500_koef
...
Рейтинг: 0 / 0
Про bind peeking
    #39561458
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vintа если лапша и подзапрос на подзапросе?
...то выбиваешь ресурсы на рефакторинг и приводишь к читаемому/сопровождаемому состоянию.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561460
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envА там type = pkg_const.legacy_ussr_finplan_5year_in_one_100500_koefЯ пробовал создать такую константу, говорит слишком длинный идентификатор.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561462
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
да что тут про сопровождение вообще говорить, если речь не идет о хардкодинге констант в запросы...
если упрощенно
Код: plsql
1.
'select * from t where type='||:type||' and a=:a and b=:b' 


где тут сложность?
...
Рейтинг: 0 / 0
Про bind peeking
    #39561463
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadenvА там type = pkg_const.legacy_ussr_finplan_5year_in_one_100500_koefЯ пробовал создать такую константу, говорит слишком длинный идентификатор.
Благая весть!
авторDatabase Overall
Core Database Improvements

Core database improvements.

Long Identifiers


The maximum length of identifiers is increased to 128 bytes for most identifiers, up from 30 bytes in previous releases.


Providing longer identifiers gives customers greater flexibility in defining their naming schemes, such as longer and more expressive table names. Having longer identifiers also enables object name migration between databases with different character sets, such as Thai to Unicode.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561464
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vintнаписанную 5 лет назадТебе быстрее будет вспомнить (не вспомнив, найти документацию по значениям; не найдя документации, найти кого-нибудь, кто знает…) физический смысл каждого литерала?
...
Рейтинг: 0 / 0
Про bind peeking
    #39561465
cursor_sharing
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cursor_sharing=force - и нет проблемы bind/literal

Работает, проблем не знаю. OLTP и DW
...
Рейтинг: 0 / 0
Про bind peeking
    #39561467
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderгде тут сложность?
Тут сложность в превращении ошибок компиляции в runtime-error - например, в следствие изменения определения таблицы.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561468
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cursor_sharingне знаю
ИМХО в этой вырванной из контекста цитате цитате вся соль процитированного поста :(
...
Рейтинг: 0 / 0
Про bind peeking
    #39561471
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousТут сложность в превращении ошибок компиляции в runtime-error - например, в следствие изменения определения таблицы.Согласен. Юнит-тестами код покрывать не предлагать!
...
Рейтинг: 0 / 0
Про bind peeking
    #39561472
cursor_sharing
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymouscursor_sharingне знаю
ИМХО в этой вырванной из контекста цитате цитате вся соль процитированного поста :(

Я никого не цитировал и ничего "не вырывал". Поясните, пожалуйста.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561481
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
andrey_anonymousв следствие изменения определения таблицы. бездумного изменения?
...
Рейтинг: 0 / 0
Про bind peeking
    #39561487
AmKad, даже юнит-тесты не помогут ответить на вопрос "во что обойдется изменить тип поля" или "где стрельнет revoke" если нет депенденсов
...
Рейтинг: 0 / 0
Про bind peeking
    #39561489
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юниттестер,

Конечно. Они ответят на вопрос "во что обошлось".
...
Рейтинг: 0 / 0
Про bind peeking
    #39561490
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Юниттестернет депенденсовc PL/SQL это-то не проблема - t.col%type...
а вот запросами напрямую без разницы хоть литералы хоть бинды
...
Рейтинг: 0 / 0
Про bind peeking
    #39561494
Bанга
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Предрекаю этой теме еще +3 страницы.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561504
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@ Битва Титанов
...
Рейтинг: 0 / 0
Про bind peeking
    #39561514
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadЮниттестер,
Конечно. Они ответят на вопрос "во что обошлось".
...и то не факт :)
...
Рейтинг: 0 / 0
Про bind peeking
    #39561515
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,
дело не в смысле литерала, а в том что вытащить из пакета и найти неправильно работающую часть запроса без литералов проще.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561834
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если заменить на что-либо а-ля

Код: plsql
1.
where type_id = sys_context('CTX_GLOBAL_CONSTANT','C_CONSTANT_100500')



то тогда отлаживаться норм будет. До тех пор, правда, пока не перезагрузят сервак и забудут их переинициализировать.
...
Рейтинг: 0 / 0
Про bind peeking
    #39561839
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shtock
Код: plsql
1.
sys_context('CTX_GLOBAL_CONSTANT','C_CONSTANT_100500')

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


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