[英]High CPU usage on insert to MySQL from Java
我試圖將數組寫入mysql數據庫,但這似乎使cpu達到100%使用率。
public void add_data(double[] data) throws SQLException {
PreparedStatement c = null;
String sql = "INSERT INTO lowpassdata(data) VALUES(?)";
c = this.conn.prepareStatement(sql);
for(int i=0; i<data.length; i++) {
c.setDouble(1, data[i]);
c.executeUpdate();
}
c.close();
}
JDBC調用是阻塞的(同步的),因此不要讓其他線程在運行時運行,而且您在緊密的循環中做了很多工作-因此,我希望看到CPU使用率很高。
我認為您應該嘗試3件事:
研究JDBC批處理操作-有關示例,請參見JDBC批處理插入OutOfMemoryError的答案。
批次之間的yield()
對於MySQL,添加
rewriteBatchedStatements =真
連接字符串,以大大提高批處理更新的性能。 請參閱帶有rewriteBatchedStatements = true的MySQL和JDBC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.