powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Хибер генерит запрос.. вопрос. Перформанс страдает?
28 сообщений из 28, показаны все 2 страниц
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973123
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
собссно запрос из хибера. не спрашивайте почему такой. вот такой вот да:

select * from (select * from tablename where fieldValue = ? order by field desc) where rownum <=?

прилетает скажем, миллион записей мы забираем только 50к.

если я выкину субселект и сделаю в одну линию - это как то меняет ситуацию или оракл сам умный и все сделает максимально эффективно и за него переживать не нужно?
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973137
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем гадать?

Метрики производительности можно наблюдать.

Планы запросов - тоже.

Про алгоритм CBO почитать тоже можно.
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973141
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C 12-й версии постраничный просмотр ( pagination ) стал возможен прямо в запросе.
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973155
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорян, я не специалист в оракле потому и пришел. мне кажется это неэффективно. интерпретировать то что сверху не очень могу. и да, там не 12я версия.
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973157
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT

если я выкину субселект и сделаю в одну линию - это как то меняет ситуацию или оракл сам умный и все сделает максимально эффективно и за него переживать не нужно?


Это кардинально поменяет ситуацию, так как rownum определяется до сортировки. Правда, возможно, в новых версиях что-то и поменялось.
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973158
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
select * from (select * from tablename where fieldValue = ? order by field desc) where rownum <=?

прилетает скажем, миллион записей мы забираем только 50к.


На самом деле тема не сложная, но и не тривиальная.
И вопрос тут не в форме написания, sql - язык декларативный.
В приведенном примере вопрос в сортировке.
Оптимизатор на основе декларации построит программу действий (план запроса), исходя из собственных возможностей и представлений о прекрасном.
Но попробуйте представить, как бы Вы лично решили данную задачу - отобрать Х записей, расположенных в определенном порядке.
Праальна, для начала надо отсортировать.
Отсортировать ВСЁ множество.
Просто потому, что пока не будет просмотрены (и пристроены) все фактические значения ключа сортировки - невозможно сказать, нет ли среди не просмотренных ключа, который встанет перед уже отобранными и, таким образом, сместит весь отсчет.
Обойти это нельзя.
Но иногда можно заменить предварительной статической сортировкой, а именно - построить индекс по ключу сортировки.
В этом случае субд сможет рассмотреть вариант замены сортировки на обход индекса, что для решаемой задачи бывает весьма выгодно.
Разумеется, это сработает при соблюдении некоторых условий, и одно из не вполне очевидных - установка NLS_SORT при сортировке по символьному атрибуту.
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973159
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
количество байт я вижу отличается т.е. все же оно выдирает всё в память а потом оттуда откусывает кусок
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973160
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
andreykaT
select * from (select * from tablename where fieldValue = ? order by field desc) where rownum <=?

прилетает скажем, миллион записей мы забираем только 50к.


На самом деле тема не сложная, но и не тривиальная.
И вопрос тут не в форме написания, sql - язык декларативный.
В приведенном примере вопрос в сортировке.
Оптимизатор на основе декларации построит программу действий (план запроса), исходя из собственных возможностей и представлений о прекрасном.
Но попробуйте представить, как бы Вы лично решили данную задачу - отобрать Х записей, расположенных в определенном порядке.
Праальна, для начала надо отсортировать.
Отсортировать ВСЁ множество.
Просто потому, что пока не будет просмотрены (и пристроены) все фактические значения ключа сортировки - невозможно сказать, нет ли среди не просмотренных ключа, который встанет перед уже отобранными и, таким образом, сместит весь отсчет.
Обойти это нельзя.
Но иногда можно заменить предварительной статической сортировкой, а именно - построить индекс по ключу сортировки.
В этом случае субд сможет рассмотреть вариант замены сортировки на обход индекса, что для решаемой задачи бывает весьма выгодно.
Разумеется, это сработает при соблюдении некоторых условий, и одно из не вполне очевидных - установка NLS_SORT при сортировке по символьному атрибуту.


да. понял. точно. сортировку то я и не принял во внимание. но может на уровне базы оно как то хитро оптимизируется. я в этом смысле.
это как компилляторы которые хвостовую рекурсию спокойно раскладывают в обычный фор и никаких стэк оверфлоу не происходит. я про подобного рода оптимизации.
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973161
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdm
C 12-й версии постраничный просмотр ( pagination ) стал возможен прямо в запросе.

Не надо путать этот эрзац с реальным pagination, который возможен только посредством управления курсором.
Недостатки метода те же, что и у rownum:
1. Выполнение отдельного запроса на каждую страницу - требуется очень хорошо продумать доступ к данным и поддерживать его, особенно если запрос сложнее тривиального однотабличного.
2. Неконсистентность результата при работе в умолчательном режиме изоляции транзакций.
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973170
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в общем, я так понимаю ботлнек там сортировка а дальше уже не важно?
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973189
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
в общем, я так понимаю ботлнек там сортировка а дальше уже не важно?


почему не важно?

за счет стопкей это очень "маленькая" сортировка (10 строк всегото)

....
stax
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973198
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не понимаю как физику обмануть?
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973212
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
не понимаю как физику обмануть?

зачем обманывать, "сортировать" надо не миллион, а всего 10 записей

....
stax
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973214
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax
зачем обманывать, "сортировать" надо не миллион, а всего 10 записей
Да? На какой странице?
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973237
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic
Stax
зачем обманывать, "сортировать" надо не миллион, а всего 10 записей
Да? На какой странице?

на всех. может он про мерджсорт ))) ну короче, если у нас одна таблица и есть ордеринг то ускорять особо нечего... а индексы?
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973239
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
на всех. может он про мерджсорт ))) ну короче, если у нас одна таблица и есть ордеринг то ускорять особо нечего... а индексы?
Ты уверен, что в теме? Чтобы, тем более, говорить за других.
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973271
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
если у нас одна таблица и есть ордеринг то ускорять особо нечего... а индексы?

andrey_anonymous
...иногда можно заменить предварительной статической сортировкой, а именно - построить индекс по ключу сортировки.
В этом случае субд сможет рассмотреть вариант замены сортировки на обход индекса, что для решаемой задачи бывает весьма выгодно.
Разумеется, это сработает при соблюдении некоторых условий, и одно из не вполне очевидных - установка NLS_SORT при сортировке по символьному атрибуту.
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973299
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic
andreykaT
на всех. может он про мерджсорт ))) ну короче, если у нас одна таблица и есть ордеринг то ускорять особо нечего... а индексы?
Ты уверен, что в теме? Чтобы, тем более, говорить за других.

нет. потому и пришел сюда и показал запрос и задал вопрос - есть в нем что оптимизировать или особо нет?
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973302
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если вкратце, то у меня сейчас беда в том что есть две базы в двух разных местах с одной и той же структурой таблиц (как я в это верю) в одной базе запрос на миллионе записей работает ок. ну для такого объема ок. во второй приложение падает по таймауту в базу запрос ушел назад не пришел. ))) может дольше ждать надо было.

так или иначе, у мен янет доступа к базам и все что я могу - для начала,предположить и об этом сказать. а дальше уже думать. - мучить дбо-шников или думать что с кодом делать.
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973329
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
все что я могу - для начала,предположить и об этом сказать. а дальше уже думать. - мучить дбо-шников или думать что с кодом делать.

Если нет доступа, то нет и спроса.
С положительным эффектом оптимизацией занимается тот, у кого есть:
- доступ
- квалификация

Отсутствие любой из этих позиций превращает оптимизацию в... ну, помните, наверное -
"движение есть, прогресса - нет"

YouTube Video
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973435
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты настоящий программист. ответ и верный и совершенно бесполезный одновременно.
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973444
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
если вкратце

если вкратце
сравнить планы на обеих базах

дальше уже решать как поступать

проблему можно озвучить ДБА, вдрух кто-то на карантине мается и сглянется

зы
по сегоднишним меркам "миллион" записей ето не так уж и много
.....
stax
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973449
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
ты настоящий программист


Мы тут все такие.

Сразу было сказано - вы пытаетесь гадать на кофейной гуще.
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973464
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax
andreykaT
если вкратце

если вкратце
сравнить планы на обеих базах

дальше уже решать как поступать

проблему можно озвучить ДБА, вдрух кто-то на карантине мается и сглянется

зы
по сегоднишним меркам "миллион" записей ето не так уж и много
.....
stax

дба уже сказали - поставь индексы на поле по которому фильтруешь и поле по которому сортируешь. и всё :) очевидно да. я и сам первое что предположил это - это.

суть моего вопроса была в общем то в том что есть запрос и есть ли у него какой то потенциал к улучшению. если нет то - таска скидывается на дба. если есть то ковыряю я.
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973482
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,

так просто "ставить" индексы рисково

order by field desc) where rownum <=? мало что можно улучшить
добавить хинт, и то обсуждаемо

Вы версию оракля не озвучили

разве что в не древних версиях синтаксис "улучшился"
select ... order by xxx fetch first n rows only

а вот почему поведение на второй базе не работает (медленно), надо найти причину

зы
статистики на базах могут сильно отличаться (напр на второй утарела/не собиралась)

....
stax
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39973573
PuM256
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreykaT
если я выкину субселект и сделаю в одну линию - это как то меняет ситуацию или оракл сам умный и все сделает максимально эффективно и за него переживать не нужно?

Поменяет ситуацию очень сильно - будешь получать неверные результаты, так как сначала отработает where rownum <, а уже потом order by.
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39974143
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в общем, беда-беда. в таблице оказалось 250 миллионов записей.
...
Рейтинг: 0 / 0
Хибер генерит запрос.. вопрос. Перформанс страдает?
    #39974227
PuM256
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну и что? Если погадать на кофейной гуще, то индекс по tablename(fieldvalue, field desc) будет замечательно работать. А если нет, то надо смотреть планы (причём до того, как начинать заниматься гаданием). Можно с gather_plan_statistics + ALLSTATS.
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Хибер генерит запрос.. вопрос. Перформанс страдает?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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