数据库大批量操作数据耗时分析

  • ~3.03K 字

数据库操作过程中经常会遇到需要大批量操作数据的情况,使用不同的方式会占用不同的时间,下面是我在OrmLite中的一些耗时记录

  1. 使用callBatchTasks加载数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
qfQbsCellDao.callBatchTasks(new Callable<Object>() {
@Override
public Object call() throws Exception {
for (DataAdjustmentSyncCellQBSInfos cellItem : cellQBSInfos) {

TblQFQbsCell cellData = new TblQFQbsCell();
cellData.setCellId(cellItem.getId());
cellData.setCellCode(cellItem.getCode());
cellData.setCellName(cellItem.getName());
cellData.setCellTypeId(cellItem.getCellTypeId());
cellData.setPartId(cellItem.getPartQBSId());
cellData.setContractId(cellItem.getContractId());
cellData.setModifyTime(cellItem.getLastModTime());
cellData.setState(cellItem.getState());
cellData.setJsonData(gson.toJson(cellItem));

qfQbsCellDao
.createOrUpdate(cellData);
}
return null;
}
})

image-20220428162626384

共7373ms

  1. 直接createOrUpdate
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for (DataAdjustmentSyncCellQBSInfos cellItem : cellQBSInfos) {

TblQFQbsCell cellData = new TblQFQbsCell();
cellData.setCellId(cellItem.getId());
cellData.setCellCode(cellItem.getCode());
cellData.setCellName(cellItem.getName());
cellData.setCellTypeId(cellItem.getCellTypeId());
cellData.setPartId(cellItem.getPartQBSId());
cellData.setContractId(cellItem.getContractId());
cellData.setModifyTime(cellItem.getLastModTime());
cellData.setState(cellItem.getState());
cellData.setJsonData(gson.toJson(cellItem));

qfQbsCellDao
.createOrUpdate(cellData);
}

image-20220428162925869

共29319ms

  1. 使用AndroidDatabaseConnection一次提交事务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// ORMLite的数据连接封装类
AndroidDatabaseConnection adc = new AndroidDatabaseConnection(baseDBHelper.getWritableDatabase(),true);
qfQbsCellDao.setAutoCommit(adc,false);
// 存储点名称为create_claxx
Savepoint sp = adc.setSavePoint("Create_Update_Cell");
for (DataAdjustmentSyncCellQBSInfos cellItem : cellQBSInfos) {

TblQFQbsCell cellData = new TblQFQbsCell();
cellData.setCellId(cellItem.getId());
cellData.setCellCode(cellItem.getCode());
cellData.setCellName(cellItem.getName());
cellData.setCellTypeId(cellItem.getCellTypeId());
cellData.setPartId(cellItem.getPartQBSId());
cellData.setContractId(cellItem.getContractId());
cellData.setModifyTime(cellItem.getLastModTime());
cellData.setState(cellItem.getState());
cellData.setJsonData(gson.toJson(cellItem));

qfQbsCellDao
.createOrUpdate(cellData);
}
adc.commit(sp);

image-20220428163708217

共7574ms

赞助喵
非常感谢您的喜欢!
赞助喵
分享这一刻
让朋友们也来瞅瞅!