У меня есть список записей, которые нужно вставить в БД с помощью моих приманок. Раньше мой код выглядел примерно так:
for(Item item : items){
sqlSession.insert("insert", item);
}
Использование этого метода работает, но я обнаружил, что на сервере Mysql
есть динамический инкрементный DiskIO из-за количества элементов.
Поскольку у меня мало доступа к конфигурации MySql, и я надеюсь решить эту проблему с большим объемом дискового ввода-вывода, я нахожу несколько возможных решений:
- используя
ExecutorType.BATCH
дляsqlSession
- вставить несколько значений в один оператор вставки, например:
insert into Item values <foreach collection="list" item="item" index="index" separator=","> (#{item.a}, #{item.b}...) </foreach>
Кто-нибудь знает, какой из них подходит для решения моей проблемы с высоким diskIO и в чем основное различие между этими двумя решениями? Спасибо.