Я хотел бы подробнее остановиться на ответе Бертиля, поскольку я экспериментировал с параметрами URL-адреса соединения.
rewriteBatchedStatements=true
является важным параметром. useServerPrepStmts
по умолчанию уже имеет значение false, и даже изменение его на true не имеет большого значения с точки зрения производительности пакетной вставки.
Теперь я думаю, что пришло время написать, как rewriteBatchedStatements=true
значительно повышает производительность. Это делает rewriting of prepared statements for INSERT into multi-value inserts when executeBatch()
( Источник ). Это означает, что вместо отправки следующих n
INSERT операторов на сервер MySQL каждый раз, когда вызывается executeBatch()
:
INSERT INTO X VALUES (A1,B1,C1)
INSERT INTO X VALUES (A2,B2,C2)
...
INSERT INTO X VALUES (An,Bn,Cn)
Будет отправлен один оператор INSERT:
INSERT INTO X VALUES (A1,B1,C1),(A2,B2,C2),...,(An,Bn,Cn)
Вы можете наблюдать это, переключаясь на запись в журнал mysql (по SET global general_log = 1
), которая будет регистрировать в файле каждый оператор, отправляемый на сервер mysql.