各位前辈/大神 好:
目前使用spring boot MVC开发后端web程式,使用jdbctemplate写数据库程式,
用到其batchUpdate方法批次更新5万笔资料,共花了26.443秒,执行效能不是很好,
说明如下:
1.软件版本说明:
spring boot 3.0.2
spring-jdbc 6.0.4
mssql-jdbc 12.2.0
数据库 微软SQL Server 2019 Express
作业系统Windows 10
2.程式码:
StocksRepository.java
仅列出batchUpdate方法的程式码
public void batchUpdate(List<stock> stocks) {
jdbc_template.batchUpdate(
"update stocks set amount = ? where parts_number = ?",
new BatchPreparedStatementSetter() {
public void setValues(PreparedStatement ps,int i)
throws SQLException{
ps.setString(1,stocks.get(i).getAmount());
ps.setString(2,stocks.get(i).getParts_number());
}
public int getBatchSize(){
return stocks.size();
}
}//end BatchPreparedStatementSetter
);//end jdbctemplate batchupdate
}
rewriteBatchedStatements=true
作者:
surimodo (好吃棉花糖)
2023-04-02 12:34:00你最后那个只是把一个大List拆成小List又串一起处理
作者:
achaos (热~~~~)
2023-04-02 12:48:00parts_number有设定index吗?
database talbe parts_number有设定索引回fgh81113:batch是设定5万笔,共花26秒,效能不好。
作者:
achaos (热~~~~)
2023-04-02 16:20:00batchUpdate有一个函数可以放batctSize,改成500看看batchSize,我记得建议是设定500~1000
作者:
kentyeh (kent)
2023-04-02 21:33:00建议自己处理commit时机,可考虑每仟笔commit 一次
原程式码看起来没什么问题 索引也设了sql server还有一招 "聚集索引 非聚集索引"但这招可能不是你说想调整就调整的方式
作者: mybluesky (天族) 2023-05-22 23:04:00
请将更新资料放另一暂存表,一次更新原表数据
作者:
sw12 (专注.幽默)
2023-06-26 14:36:00改r2dbc