Android 在 ROOM 数据库中插入大量数据

2024-05-08

我有大约 10 个模型,每个模型都有超过 120K 行和 90 列的记录,其中包含双数组值。在 Room 中插入任何模型都需要超过 125-130 秒。任何人都可以建议我需要做什么才能使用一些批量插入技术来保存所有这些 120K,该技术大约需要 1 或 2 秒。获取任何范围的记录都很顺利,并在可承受的时间内(不到一秒)返回子列表。下面是我当前正在使用的 DAO 和存储库方法。

DAO 看起来像这样

@Transaction
@Insert(onConflict = OnConflictStrategy.IGNORE) // IGNORE/REPLACE has no effect (just to clear out things)
void insertAllDynStabRecord(List<DynStab> dynStabList);

存储库方法第一种方法

Executors.newSingleThreadExecutor().execute(() -> {
        pdDao.insertAllDynStabRecords(dynStabList);
    });

存储库方法第二种方法

private static class WriteDynStabRecords extends AsyncTask<List<DynStab>, Void, Void> {
    private PDDao pdDao;

    private WriteDynStabRecords(PDDao pdDao) {
        this.pdDao = pdDao;
    }

    @Override
    protected Void doInBackground(List<DynStab>... dynStabList) {
        pdDao.insertAllDynStabRecords(dynStabList[ 0 ]); 
        return null;
    }
}

这两种方法都需要超过 120 秒才能写入大约 120K 记录。我做错了什么或者在 ROOM 数据库中插入批量数据的最佳和最快方法是什么。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 在 ROOM 数据库中插入大量数据 的相关文章

随机推荐