在學習mybatisPlus時,看到一個原本沒用過的參數:
rewriteBatchedStatements=true
將上述代碼裝入jdbc的url中即可使數據庫啟用批處理寫入。
需要注意的是,這個參數僅適用于MySQL JDBC 驅動的私有擴展參數。
作用原理是:
原本的數據插入是一條一條進行插入,每次插入都會進行提交,每次提交都會造成網絡延遲,所以時間自然就會緩慢。
所以想要提高插入速度,我們可以將這些批量插入的語句使用foreach來進行拼接,也就是將這些插入語句合并為一條,那么最終只需要進行提交一次。
或者使用mysql語句開啟批處理,讓數據庫完成自動拼接。兩者效果是相同的,所以為了省事還是直接使用語句,讓數據庫進行拼接。
簡單來說,省下來的時間實際上是網絡延遲。
還需要注意:mysql批處理的緩存大小為4MB,建議每次緩存數據不要超過1000條,否則會出現存儲max的異常。