У меня есть класс домена с пятью свойствами, все из которых являются либо строками, целыми числами, либо двойными. Я использую базу данных с внутренней памятью в качестве моего источника данных для этого класса домена. Это единственный объект, хранящийся в этой базе данных; остальные хранятся в полностью отдельной базе данных MySQL.Медленный пакетный импорт с вложенной в память базой данных H2
База данных H2 временно. Данные загружаются из загружаемого удаленно CSV-файла каждый час и заменяют старые данные в базе данных. Поскольку все остальные процессы должны дождаться завершения, важно, чтобы это было как можно быстрее.
В настоящее время мой код генерирует массив из примерно 6 000 из этих объектов домена, а затем для каждого save
. Это все внутри withTransaction
.
Это займет около 10 секунд, чтобы сэкономить. Числа немного хуже с источником данных HSQLDB in-memory. Я пробовал следовать инструкциям по очистке сеанса и тому подобное, но это только увеличивает время, которое требуется.
Какое оптимальное решение для ускорения пакетной вставки этих 6000 объектов? Будет ли отказ от GORM и написание операторов вставки SQL напрямую значительно быстрее?
// data is an array of about 6,000 domain objects
data.each { item ->
item.save()
}