JDBC批量更新pstmt.addBatch();的问题

JDBC批量更新pstmt.addBatch();的问题,第1张

在数据量越大的时候 越能体现前者的优势

因为数据库的处理速度是非常惊人的 单次吞吐量很大 执行效率极高

addBatch()把若干sql语句装载到一起,然后一次送到数据库执行,执行需要很短的时间

而pstmt.executeUpdate() 是一条一条发往数据库执行的 时间都消耗在数据库连接的传输上面

举个例子可以帮助理解:

我这有一台超大功率的面粉加工机,前者相当于 把所有农户袋装的麦子收集起来用卡车一次送往加工厂 后者相当于农户排好队用同样的卡车一人一人的往加工厂送麦子 麦子加工5分钟完成,但是每个人到工厂就得3小时,我数据库执行效率再高也没用,时间都耗在传输的路上了!!

这就出现了数据传输的性能瓶颈 addBatch就是为解决这样的问题而产生的!

 如果成批地处理插入和更新 *** 作,就能够显著地减少它们所需要的时间。Oracle提供的Statement和 CallableStatement并不真正地支持批处理,只有PreparedStatement对象才真正地支持批处理。我们可以使用addBatch()和executeBatch()方法选择标准的JDBC批处理,或者通过利用PreparedStatement对象的setExecuteBatch()方法和标准的executeUpdate()方法选择速度更快的Oracle专有的方法。要使用Oracle专有的批处理机制,可以以如下所示的方式调用setExecuteBatch():

PreparedStatement pstmt3D null

try {

((OraclePreparedStatement)

pstmt).setExecuteBatch(30)

...

pstmt.executeUpdate()

}

name是MySQL保留字,原则上不应用作字段名或库名,如果非用不可,那在使用时要给它用反单引号(即`,也就是大键盘数字键1左边的那个键)括起来。所以你试试 setString(1, "`name`") 看还会不会出错。

条件允许的话,还是建议你尽量更改数据库的字段名name,比方说可以改为name1


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11355598.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存