Почему JdbcTemplate.batchUpdate() из Spring-Core 5.3.31 сравнительно медленнее, чем Spring-Core 4.2.9.RELEASEJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему JdbcTemplate.batchUpdate() из Spring-Core 5.3.31 сравнительно медленнее, чем Spring-Core 4.2.9.RELEASE

Сообщение Anonymous »

Я использую класс NamedParameterJdbcTemplate в приложении Spring Boot.
и мое приложение имеет функцию массовой загрузки. Я обновляю определенные столбцы, но в настоящее время наблюдаю ->
с помощью Spring-Core 4.2.9.RELEASE: это занимает около 4 секунд

Код: Выделить всё


org.springframework
spring-core
4.2.9.RELEASE

и с Spring-core-5.3.31 то же самое занимает 3 минуты.

Код: Выделить всё

org.springframework
spring-core
5.3.31

Зависимость от базы данных

Код: Выделить всё

com.oracle.database.jdbc
ojdbc8
19.3.0.0

Код: Выделить всё

com.oracle.database.jdbc
ucp
19.19.0.0

После проверки моего кода я обнаружил, что

Код: Выделить всё

jdbctemplate.batchUpdate()В новой версии 
требуется больше времени.

Код: Выделить всё

// lets say BATCH_SIZE is 100
final List batchedRecords = new ArrayList(BATCH_SIZE);

@Autowired
private NamedParameterJdbcTemplate jdbcTemplate;
Ниже приведен основной метод. который принимает данные из полезной нагрузки JSON. Происходит некоторая обработка данных, а затем после обработки эта запись вставляется в пакетные записи.

Код: Выделить всё

Map record;
for(Iterator saveRecs= dataNode.elements(); saveRecs.hasNext();) {
record = new HashMap();
// some processing
insert( record);
}
done();

Код: Выделить всё

public final void insert(final Map record) {
batchedRecords.add(record);
recordCount++;
if (batchedRecords.size() == BATCH_SIZE) {
runBatrchInsert();
}
}

private void runBatchInsert() {
Map[] recordArr = new HashMap[batchedRecords.size()];
jdbcTemplate.batchUpdate(sql, recordArr);
}

private void done(){
runBatchInsert();
}
К вашему сведению -> я использую JDBC:thin URL в application.properties для настройки соединения с базой данных.

application.properties

Код: Выделить всё

jdbc.ora.url: jdbcLoracle:thin:@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Код: Выделить всё

jdbc.ora.user:

Код: Выделить всё

jdbc.ora.password:
Ниже мои бобы

Код: Выделить всё

@Autowiredprivate HikariOracleDataSourceFactory ds;

Код: Выделить всё

@Beanpublic DataSource dataSource(){return ds.createDataSource("ora");}

Код: Выделить всё

@Beanpublic NamedParameterJdbcTemplate jdbcTemplate(DataSource datasource){return new NamedParameterJdbcTemplate(datasource);}
Я перепробовал множество решений, доступных в Интернете, но ни одно из них мне не помогло.
Может кто-нибудь объяснить, что здесь изменилось?

Подробнее здесь: https://stackoverflow.com/questions/791 ... y-very-slo
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»