我正在尝试将数组写入 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 使用率。
我认为你应该尝试三件事:
研究 JDBC 批处理操作 - 请参阅 JDBC Batch Insert OutOfMemoryError 的答案举个例子。
批处理之间的yield()
对于 MySQL,添加
rewriteBatchedStatements=true
连接字符串可大大提高批量更新的性能。请参阅MySQL and JDBC with rewriteBatchedStatements=true
关于java - 从 Java 插入 MySQL 时 CPU 使用率较高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52927778/