Мои весенние пакетные задания извлекают данные из таблицы 1 из oracle БД и записывают их в postgres БД на шаге 1.
Те же данные о извлечении задания из таблицы 1 и таблицы 2 с помощью запроса равного объединения oracle БД и запишите их в postgres БД на шаге 2.
Оба шага 1 и шаг 2 выполняются параллельно с использованием разделенной логики потока c.
Я поделился с ThreadPoolTaskExecutor на обоих шагах и число порожденных потоков равно числу процессоров + 1.
Размер порции настроен как 1000
Я протестировал это пакетное задание из моей локальной системы , имеющей 8 процессоров, Oracle БД размещается на удаленном компьютере, а postgres БД размещается на postgres testcontainers.
8 процессоров: 9 потоков за 2 шага: 2 шага параллельно
Как выборка, так и запись 50K записей в таблице 1 и таблице 2 postgres DB, это занимает 26 минут 10,945 секунд
i.e. 100K records are read and written in 26 minutes 10.945 seconds.
Могу ли я сказать, что моя пакетная работа в локальной среде работает оптимальным образом?
Если нет, то какие еще факторы я должен учитывать в плане дизайна или инфраструктуры для повышения производительности?