2014-12-17 1 views
-1

У меня возникают проблемы с созданием отчета, результат достигает более 500 000 строк. Поверьте, этот результат уже является фильтром. Запрос (DB2) выполняется почти мгновенно, но взаимодействие в resultSet абсурдно медленное.Медлительность при чтении большого ResultSet

Я делаю несколько тестов, чтобы попытаться улучшить этот процесс, но до сих пор без успеха. - Сначала было преобразование прямых данных для компонента (используется для генерации отчетов), но оно очень медленное, и база данных дает время ожидания. - Я пытался превратиться в более простой процесс для тестирования (Resultset к HashMap) безуспешно - Используется конфигурация setFetchSize (2000) для утверждения - я посмотрел на возможности использования Потокобезопасного, но не поддерживает Resultset

Уже изменил время ожидания банка, чтобы увеличить время обработки, но моя проблема не была решена.

В любом случае, уже попробовал несколько возможностей. У кого-нибудь есть какие-либо советы или решения моей проблемы?

+0

Сколько времени занимает? 500 000 строк - это много данных ... – Thilo

+0

Другими словами, вы пытаетесь обрабатывать 500K строк в Java. Вместо этого вы должны найти способ их обработки в базе данных. – mustaccio

+0

Нам нужен способ более подробно, например код, который вы пытаетесь запустить. Я с mustaccio, хотя - вытащить, что многие строки в Java будет сталкиваться с проблемами. –

ответ

0

Прежде всего позвольте мне очистить, Отчетность, задача создания отчетов никогда не должна выполняться в прикладной БД.

БД приложения, транзакционные БД предназначены для быстрых транзакций, которые не связаны с извлечением тяжелых результатов, обработкой. Эти задачи должны решаться на серверах DW или резервных копиях.

Во-вторых,

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

  1. Если можно поставить логику обработки на DB стороны в виде процедур (часть математики) с эффективными запросами для повышения производительности с точки зрения обработки и передачи данных.
  2. Постарайтесь периодически собирать отчеты, используя триггеры/запланированные задания и т. Д., А при создании отчетов используют промежуточные отчеты вместо БД (как вы сказали, выполнение вашего запроса не является проблемой, но это сохранит итерацию по большому набору.) могут использовать значения из промежуточных отчетов, поэтому частота повторения будет меньше.
+0

... разделение действительно более одно относится к разным таблицам, хотя, конечно, помогают отдельные физические ящики. Не совсем понятно, что делает OP, хотя похоже, что сам db вряд ли будет проблемой. Насколько нам известно, он может продолжать процесс, касающийся отчетности db. –

 Смежные вопросы

  • Нет связанных вопросов^_^