Выбор ответа Middle JDBC и транзакции обновлено
Массовая вставка
Вопрос
Нужно вставить 100 000 строк. Что даст основной выигрыш?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Батч addBatch/executeBatch в одной транзакции. Главная цена массовой вставки это сетевые обмены и коммиты.
Варианты ответа
- Отдельный
executeUpdateна каждую строку с autoCommit - Новое соединение на каждую тысячу строк
- Statement вместо PreparedStatement
- Батч
addBatch/executeBatchв одной транзакцииправильный ответ
Разбор
Главная цена массовой вставки это сетевые обмены и коммиты. Батч отправляет пачку команд за раз, одна транзакция избавляет от fsync на каждой строке. Построчно с autoCommit это 100 000 обменов и коммитов. Новые соединения только добавят затрат. Statement не быстрее и небезопасен.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.