如何保证每隔一段时间更新一次数据库



我在一个应用程序Spring java8工作我有一个异步生成标签(pdf生成)的函数。它包含一个循环,通常它会运行1000多个,它会生成1000多个PDF标签。在每个循环结束后,我们需要更新数据库,以便我们只是保存状态,即最初它保存numberOfgeneratedCount=0,在每个标签之后,我们只是增加变量并更新表。没有必要在每个循环结束时将增量计数保存为db,我们需要的是在固定的间隔内更新数据库以减少数据库插入的负载。现在我的代码是

// Label is a database model class labeldb is variable of that 
//commonDao.saveLabelToDb function to save Label object
int numberOfgeneratedCount =0;
labeldb.setProcessedOrderCount(numberOfgeneratedCount);
commonDao.saveLabelToDb(labeldb);
for(Order order: orders){
generated = true;
try{
// pdf generation code
}catch Exception e{
// catch block here
generated = false;
}
if(generated){
numberOfgeneratedCount++;
deliveryLabeldb.setProcessedOrderCount(numberOfgeneratedCount);
commonDao.saveLabelToDb(labeldb );
}
}

为了提高性能,我们只需要每隔10秒更新一次数据库。如有任何帮助,不胜感激

我使用以下代码完成了此操作,我不确定这是否是一个很好的解决方案,有人请使用一些内置函数改进此

int numberOfgeneratedCount =0;
labeldb.setProcessedOrderCount(numberOfgeneratedCount);
commonDao.saveLabelToDb(labeldb);
int nowSecs =LocalTime.now().toSecondOfDay();
int lastSecs = nowSecs;
for(Order order: orders){
nowSecs = LocalTime.now().toSecondOfDay();
generated = true;
try{
// pdf generation code
}catch Exception e{
// catch block here
generated = false;
}
if(generated){
numberOfgeneratedCount++;
deliveryLabeldb.setProcessedOrderCount(numberOfgeneratedCount);
if(nowSecs-lastSecs > 10){
lastSecs=nowSecs;
commonDao.saveLabelToDb(labeldb );
}

}
}

最新更新