Я пытаюсь заполнить resultSet в Java примерно 50 000 строк из 10 столбцов
а затем вставляя их в другую таблицу, используя метод batchExecute
PreparedStatement
.
Чтобы ускорить процесс, я провел некоторое исследование и обнаружил, что при чтении данных в resultSet важна роль fetchSize.
Наличие очень низкого fetchSize может привести к слишком большому количеству поездок на сервер, и очень высокий fetchSize может блокировать сетевые ресурсы, поэтому я немного экспериментировал и настраивал оптимальный размер, соответствующий моей инфраструктуре.
Я читаю этот resultSet и создаю инструкции insert для вставки в другую таблицу другой базы данных.
Что-то вроде этого (просто образец, а не настоящий код):
for (i=0 ; i<=50000 ; i++) {
statement.setString(1, "[email protected]");
statement.setLong(2, 1);
statement.addBatch();
}
statement.executeBatch();
- Будет ли метод executeBatch попытаться сразу отправить все данные?
- Есть ли способ определить размер партии?
- Есть ли лучший способ ускорить процесс объемной вставки?
При обновлении навалом (50 000 строк 10 колоний) лучше ли использовать обновляемый ResultSet
или PreparedStaement с пакетным исполнением?