日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JDBC批量操作性能提升

發布時間:2023/12/13 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JDBC批量操作性能提升 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JDBC

當使用INSERT INTO....VALUES()語句批量插入的時候,應該使用JDBC的PreparedStatement的批量操作方法,而不是採用一條一條運行的方法。

比如(來源:http://superjavason.iteye.com/blog/255423):

如上圖,代碼有3個關鍵的處理步驟:

1)關閉自己主動提交

2)addBatch

3)executeBatch

使用這樣的方法,SQLite測試時的效果提升很明顯,從 10000/s提升到100000/s(數據僅做參考,不能作為決策根據)

須要注意的是:這樣的方式僅僅適合同樣結構的SQL語句批量運行。對于不同結構的SQL語句不能用這樣的方式,由于PreparedStatement在初始化的時候要指定sql

?

MySQL

使用上述參數后,MySQL的性能也有一定的提升。但提升不明顯。經過查找,確認和例如以下兩個參數有關:

  • rewriteBatchedStatements=true

mysql默認關閉了batch處理, 通過此參數進行打開。 這個參數能夠重寫向 數據庫提交的SQL語句

  • useServerPrepStmts=false

假設不開啟(useServerPrepStmts=false)。 使用com.mysql.jdbc.PreparedStatement進行本地SQL拼裝, 最后送到db上就是已經替換了?

后的終于SQL

?

經過測試。打開這2個參數后,mysql的批處理性能從1000多提升到50000多

具體請參考:http://blog.csdn.net/whucyl/article/details/20838079

轉載于:https://www.cnblogs.com/lxjshuju/p/6803073.html

總結

以上是生活随笔為你收集整理的JDBC批量操作性能提升的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。