|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
собссно запрос из хибера. не спрашивайте почему такой. вот такой вот да: select * from (select * from tablename where fieldValue = ? order by field desc) where rownum <=? прилетает скажем, миллион записей мы забираем только 50к. если я выкину субселект и сделаю в одну линию - это как то меняет ситуацию или оракл сам умный и все сделает максимально эффективно и за него переживать не нужно? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2020, 12:23 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
Зачем гадать? Метрики производительности можно наблюдать. Планы запросов - тоже. Про алгоритм CBO почитать тоже можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2020, 12:44 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
C 12-й версии постраничный просмотр ( pagination ) стал возможен прямо в запросе. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2020, 12:51 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
сорян, я не специалист в оракле потому и пришел. мне кажется это неэффективно. интерпретировать то что сверху не очень могу. и да, там не 12я версия. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2020, 13:25 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
andreykaT если я выкину субселект и сделаю в одну линию - это как то меняет ситуацию или оракл сам умный и все сделает максимально эффективно и за него переживать не нужно? Это кардинально поменяет ситуацию, так как rownum определяется до сортировки. Правда, возможно, в новых версиях что-то и поменялось. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2020, 13:28 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
andreykaT select * from (select * from tablename where fieldValue = ? order by field desc) where rownum <=? прилетает скажем, миллион записей мы забираем только 50к. На самом деле тема не сложная, но и не тривиальная. И вопрос тут не в форме написания, sql - язык декларативный. В приведенном примере вопрос в сортировке. Оптимизатор на основе декларации построит программу действий (план запроса), исходя из собственных возможностей и представлений о прекрасном. Но попробуйте представить, как бы Вы лично решили данную задачу - отобрать Х записей, расположенных в определенном порядке. Праальна, для начала надо отсортировать. Отсортировать ВСЁ множество. Просто потому, что пока не будет просмотрены (и пристроены) все фактические значения ключа сортировки - невозможно сказать, нет ли среди не просмотренных ключа, который встанет перед уже отобранными и, таким образом, сместит весь отсчет. Обойти это нельзя. Но иногда можно заменить предварительной статической сортировкой, а именно - построить индекс по ключу сортировки. В этом случае субд сможет рассмотреть вариант замены сортировки на обход индекса, что для решаемой задачи бывает весьма выгодно. Разумеется, это сработает при соблюдении некоторых условий, и одно из не вполне очевидных - установка NLS_SORT при сортировке по символьному атрибуту. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2020, 13:32 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
количество байт я вижу отличается т.е. все же оно выдирает всё в память а потом оттуда откусывает кусок ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2020, 13:33 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
andrey_anonymous andreykaT select * from (select * from tablename where fieldValue = ? order by field desc) where rownum <=? прилетает скажем, миллион записей мы забираем только 50к. На самом деле тема не сложная, но и не тривиальная. И вопрос тут не в форме написания, sql - язык декларативный. В приведенном примере вопрос в сортировке. Оптимизатор на основе декларации построит программу действий (план запроса), исходя из собственных возможностей и представлений о прекрасном. Но попробуйте представить, как бы Вы лично решили данную задачу - отобрать Х записей, расположенных в определенном порядке. Праальна, для начала надо отсортировать. Отсортировать ВСЁ множество. Просто потому, что пока не будет просмотрены (и пристроены) все фактические значения ключа сортировки - невозможно сказать, нет ли среди не просмотренных ключа, который встанет перед уже отобранными и, таким образом, сместит весь отсчет. Обойти это нельзя. Но иногда можно заменить предварительной статической сортировкой, а именно - построить индекс по ключу сортировки. В этом случае субд сможет рассмотреть вариант замены сортировки на обход индекса, что для решаемой задачи бывает весьма выгодно. Разумеется, это сработает при соблюдении некоторых условий, и одно из не вполне очевидных - установка NLS_SORT при сортировке по символьному атрибуту. да. понял. точно. сортировку то я и не принял во внимание. но может на уровне базы оно как то хитро оптимизируется. я в этом смысле. это как компилляторы которые хвостовую рекурсию спокойно раскладывают в обычный фор и никаких стэк оверфлоу не происходит. я про подобного рода оптимизации. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2020, 13:34 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
dmdmdm C 12-й версии постраничный просмотр ( pagination ) стал возможен прямо в запросе. Не надо путать этот эрзац с реальным pagination, который возможен только посредством управления курсором. Недостатки метода те же, что и у rownum: 1. Выполнение отдельного запроса на каждую страницу - требуется очень хорошо продумать доступ к данным и поддерживать его, особенно если запрос сложнее тривиального однотабличного. 2. Неконсистентность результата при работе в умолчательном режиме изоляции транзакций. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2020, 13:36 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
в общем, я так понимаю ботлнек там сортировка а дальше уже не важно? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2020, 14:15 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
andreykaT в общем, я так понимаю ботлнек там сортировка а дальше уже не важно? почему не важно? за счет стопкей это очень "маленькая" сортировка (10 строк всегото) .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2020, 15:19 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
не понимаю как физику обмануть? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2020, 15:28 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
andreykaT не понимаю как физику обмануть? зачем обманывать, "сортировать" надо не миллион, а всего 10 записей .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2020, 15:49 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
Stax зачем обманывать, "сортировать" надо не миллион, а всего 10 записей ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2020, 15:52 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
Elic Stax зачем обманывать, "сортировать" надо не миллион, а всего 10 записей на всех. может он про мерджсорт ))) ну короче, если у нас одна таблица и есть ордеринг то ускорять особо нечего... а индексы? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2020, 16:35 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
andreykaT на всех. может он про мерджсорт ))) ну короче, если у нас одна таблица и есть ордеринг то ускорять особо нечего... а индексы? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2020, 16:40 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
andreykaT если у нас одна таблица и есть ордеринг то ускорять особо нечего... а индексы? andrey_anonymous ...иногда можно заменить предварительной статической сортировкой, а именно - построить индекс по ключу сортировки. В этом случае субд сможет рассмотреть вариант замены сортировки на обход индекса, что для решаемой задачи бывает весьма выгодно. Разумеется, это сработает при соблюдении некоторых условий, и одно из не вполне очевидных - установка NLS_SORT при сортировке по символьному атрибуту. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2020, 17:35 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
Elic andreykaT на всех. может он про мерджсорт ))) ну короче, если у нас одна таблица и есть ордеринг то ускорять особо нечего... а индексы? нет. потому и пришел сюда и показал запрос и задал вопрос - есть в нем что оптимизировать или особо нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2020, 18:15 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
если вкратце, то у меня сейчас беда в том что есть две базы в двух разных местах с одной и той же структурой таблиц (как я в это верю) в одной базе запрос на миллионе записей работает ок. ну для такого объема ок. во второй приложение падает по таймауту в базу запрос ушел назад не пришел. ))) может дольше ждать надо было. так или иначе, у мен янет доступа к базам и все что я могу - для начала,предположить и об этом сказать. а дальше уже думать. - мучить дбо-шников или думать что с кодом делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2020, 18:18 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
andreykaT все что я могу - для начала,предположить и об этом сказать. а дальше уже думать. - мучить дбо-шников или думать что с кодом делать. Если нет доступа, то нет и спроса. С положительным эффектом оптимизацией занимается тот, у кого есть: - доступ - квалификация Отсутствие любой из этих позиций превращает оптимизацию в... ну, помните, наверное - "движение есть, прогресса - нет" ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2020, 19:20 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
ты настоящий программист. ответ и верный и совершенно бесполезный одновременно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2020, 09:43 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
andreykaT если вкратце если вкратце сравнить планы на обеих базах дальше уже решать как поступать проблему можно озвучить ДБА, вдрух кто-то на карантине мается и сглянется зы по сегоднишним меркам "миллион" записей ето не так уж и много ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2020, 10:02 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
andreykaT ты настоящий программист Мы тут все такие. Сразу было сказано - вы пытаетесь гадать на кофейной гуще. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2020, 10:10 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
Stax andreykaT если вкратце если вкратце сравнить планы на обеих базах дальше уже решать как поступать проблему можно озвучить ДБА, вдрух кто-то на карантине мается и сглянется зы по сегоднишним меркам "миллион" записей ето не так уж и много ..... stax дба уже сказали - поставь индексы на поле по которому фильтруешь и поле по которому сортируешь. и всё :) очевидно да. я и сам первое что предположил это - это. суть моего вопроса была в общем то в том что есть запрос и есть ли у него какой то потенциал к улучшению. если нет то - таска скидывается на дба. если есть то ковыряю я. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2020, 10:35 |
|
Хибер генерит запрос.. вопрос. Перформанс страдает?
|
|||
---|---|---|---|
#18+
andreykaT, так просто "ставить" индексы рисково order by field desc) where rownum <=? мало что можно улучшить добавить хинт, и то обсуждаемо Вы версию оракля не озвучили разве что в не древних версиях синтаксис "улучшился" select ... order by xxx fetch first n rows only а вот почему поведение на второй базе не работает (медленно), надо найти причину зы статистики на базах могут сильно отличаться (напр на второй утарела/не собиралась) .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2020, 11:07 |
|
|
start [/forum/topic.php?fid=52&msg=39973237&tid=1881111]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 164ms |
0 / 0 |