Я пытаюсь вставить 100000 записей в базу данных Android sqlite за раз. Я использую следующие два разных метода.
private void bulkInsertDataBySavePoint(final List<User> users) {
log.debug("bulkInsertDataBySavePoint()");
DatabaseConnection conn = null;
Savepoint savepoint = null;
try {
conn = userDao.startThreadConnection();
savepoint = conn.setSavePoint("bulk_insert");
for (User user : users) {
userDao.create(user);
}
} catch (SQLException e) {
log.error("Something went wrong in bulk Insert", e);
} finally {
if (conn != null) {
try {
conn.commit(savepoint);
userDao.endThreadConnection(conn);
} catch (SQLException e) {
log.error("Something went wrong in bulk Insert", e);
}
}
}
}
А также
private void bulkInsertDataByCallBatchTasks(final List<User> users) {
log.debug("bulkInsertDataByCallBatchTasks()");
try {
userDao.callBatchTasks(new Callable<Void>() {
@Override
public Void call() throws Exception {
for (User user : users) {
userDao.create(user);
}
return null;
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
Оба метода работают нормально. В среднем они занимают 140 секунд и загружают процессор на 60-65%, что, я думаю, ненормально.
Идея в том, что я должен использовать API, который будет предоставлять данные JSON. Мне нужно проанализировать эти данные json, а затем вставить их в базу данных sqlite для автономного использования.
Я ищу эффективный способ решить эту проблему.
Любая мысль?