Спящий режим с проблемой Oracle JDBC - PullRequest
0 голосов
/ 22 октября 2009

У меня есть запрос на выборку, выполнение которого занимает 10 минут, так как он обрабатывает 10 миллионов записей. Когда я запускаю TOAD или программу, использующую обычное соединение JDBC, я получаю результаты обратно, но при выполнении задания, которое использует Hibernate в качестве ORM, не возвращает никаких результатов. Просто зависает ... даже через 45 мин? Пожалуйста, помогите

Ответы [ 2 ]

0 голосов
/ 23 октября 2009

Вы включили вывод SQL для Hibernate? Вам нужно установить hibernate.show_sql в true , чтобы сделать это.

Как только это будет сделано, сравните сгенерированный SQL с тем, который вы выполняли через TOAD. Они точно одинаковы или нет?

Я собираюсь рискнуть предположить здесь и сказать, что это не потому, что после генерации SQL Hibernate ничего не делает - соединение берется из пула; подготовленный оператор создан и выполнен - ​​поэтому он не должен отличаться от JDBC.

Таким образом, вопрос, скорее всего, заключается в том, как можно оптимизировать ваш HQL. Если вам понадобится какая-либо помощь, вам нужно будет опубликовать соответствующий HQL, а также соответствующие схемы отображений / таблиц. Также поможет запуск объяснения по запросу.

0 голосов
/ 22 октября 2009

Вы говорите, что пытаетесь получить 10M записей, используя ORM, например, спящий режим? Если в этом случае у вас есть одна большая проблема, вам нужно изменить дизайн приложения, потому что это не сработает, и о том, почему оно зависает, я уверен, потому что у него не хватает памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...