2016-11-10 4 views
0

Мне нужно выполнить 5000 операторов выбора в источнике данных и вывести результаты и вставить значения 5000 в таблицу другого источника данных.Сроки транзакции после 300s Websphere, Spring batch, DB2

за 5000 отборных заявлений (все разные Прикладных) Я exeuting по одному (Это занимает больше времени)

за 5000 вкладышами я делаю JdbcTemplate.batchUpdate()

выше работу должен выполняться каждые 30 минут. Я настроил весеннюю партию, чтобы выполнить эту работу, которая будет срабатывать каждые 30 минут CRON.

После того, как метод вызывается для завершения 5000 операторов выбора. Это займет больше 300 секунд. Таким образом, Websphere выбрасывает исключение тайм-аута. В нем говорится, что глобальное время транзакций превысило 300 секунд.

Я знаю, что могу увеличить таймаут в websphere, но я не могу этого сделать, поскольку на производстве профили серверов настроены по умолчанию.

Может кто-нибудь предложить мне лучший способ справиться с этим.

ответ

0

Вы можете попробовать уменьшить количество выбирает в качестве запросов и ответы для каждого из них являются отдельными элементами сетевой задержки, независимо от того, сколько времени они берут на стороне базы данных. Выдача 5000 индивидуальных запросов и ожидающих их индивидуальных результатов занимает много времени, даже если запросы просты. SELECT 1 FROM SYSIBM.SYSDUMMY1 s

Если два или более запросов имеют одинаковый тип результатов, вы можете присоединиться к ним с помощью UNION s и если два или более запросы должны иметь одинаковое количество результатов, то вы можете присоединиться к ним через их столбцы результата или выдуманным ключ, как, генерируемый с ROW_NUMBER():

select a,b,c from .... and select a,e,f from... превращается в

select table1.a, b,c,d,e,f from 
table (select a,b,c from ...) table1, 
table (select a,e,f from ...) table2 
where 
table1.a = table2.a 

Надеется, что это помогает,

0

Спасибо за замечания и Turan yuksel за ваши предложения. Я решил проблему.

Я разделил 5000 кв. Дюймов на более мелкие единицы и обрабатывал как список запросов вместо запроса с 5000 sqls. Теперь нет проблемы с тайм-аутом с весенней периодичностью. Таймаут, вызванный создателем записи партии Spring, поскольку пакетная транзакция была отключена через 300 секунд.

Теперь это разрешено. Надеюсь, это поможет кому-то, кто сталкивается с подобными проблемами.