Выбор ответа Middle JDBC и транзакции обновлено

Массовая вставка

Вопрос

Нужно вставить 100 000 строк. Что даст основной выигрыш?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Батч addBatch/executeBatch в одной транзакции. Главная цена массовой вставки это сетевые обмены и коммиты.

Варианты ответа

  1. Отдельный executeUpdate на каждую строку с autoCommit
  2. Новое соединение на каждую тысячу строк
  3. Statement вместо PreparedStatement
  4. Батч addBatch/executeBatch в одной транзакцииправильный ответ

Разбор

Главная цена массовой вставки это сетевые обмены и коммиты. Батч отправляет пачку команд за раз, одна транзакция избавляет от fsync на каждой строке. Построчно с autoCommit это 100 000 обменов и коммитов. Новые соединения только добавят затрат. Statement не быстрее и небезопасен.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.