Я бы посоветовал вам уменьшить размер куска до 50.
500 кажется слишком большим: вы слишком много ждете во время разговора с БД.
Одновременно уменьшите размер пула TaskExecutor или увеличьте размер пула БД.
Вы можете выбрать, какой из них, наблюдая за хостом БД: если это ЦП, а ввод-вывод не максимален, увеличьте размер пула БД, чтобы увеличить загрузку БД. Если ваш ЦП БД уже на максимуме, уменьшите размер пула TaskExecutor. Цель состоит в том, чтобы иметь жидкий процесс.
Я думаю, что БД будет вашим основным ограничивающим элементом. Поэтому начните с настройки размера пула БД в соответствии с емкостью хоста БД. Когда это будет сделано, настройте размер пула TaskExecutor в соответствии с размером пула БД (размер пула TE = размер пула БД * 1,5), а также емкости хоста пакета (ЦП, память и операции ввода-вывода).
Разделение входящих файлов на несколько жестких дисков также может помочь (если это возможно).