Обрабатывать 100 Тыс. вставок и обновлений с помощью шаблона JDBC

#java #spring-boot #jdbctemplate

#java #весенняя загрузка #jdbctemplate

Вопрос:

Я хочу обрабатывать 100 тыс. вставок или обновлений ежедневно, используя динамическую загрузку Spring. Имена столбцов будут динамическими. Я не буду заранее знать модель.

в настоящее время создается SQL для вставки или обновления и выполняются с использованием JdbcTemplate.batchUpdate(запрос), тогда как запрос представляет собой массив строк. Я вижу, что этот метод работает очень медленно. Как мы можем улучшить производительность? Возможно ли это с помощью гибернации?

 String[] query
try {
jdbcTemplate.batchUpdate(query);
status="Success";
}catch(Exception e) {
logger.error("Insert or Update Query Failed:" query);
logger.error("Error:" e.getMessage());
}
  

Комментарии:

1. Это не ошибка JdbcTemplate; вы вставляете и обновляете более 100 000 записей . Можете ли вы выполнять это пакетами для запуска в определенное время суток? Можете ли вы оптимизировать способ выполнения вставки? Поддерживает ли ваша СУБД подходящий механизм обновления?

2. Вероятно, для ваших нужд подойдет библиотека, подобная Spring batch, которая поддерживает такого рода операции по частям.

3. @geoandri: В какой -то момент вы должны заняться базой данных. Кто сказал, что таблица OP не полностью проиндексирована, что делает любую вставку или удаление невероятно дорогими?

4. измеряли ли вы время для выполнения более 100000 запросов в базе данных напрямую без использования Java?

5. Ваш вопрос очень широкий. Можете ли вы быть более конкретным? Что значит очень медленно ? Сколько записей вы можете обновлять или вставлять в секунду? Можете ли вы привести пример запроса, чтобы мы могли получить представление о том, насколько он сложный и где наибольший потенциал для оптимизации?

Ответ №1:

Пожалуйста, не забудьте добавить соответствующую индексацию для ваших столбцов. Если индексы отсутствуют, инструкции update и select потребуют много времени.