Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PreparedStatement-executeBatch_Java_Mysql_Prepared Statement - Fatal编程技术网

Java PreparedStatement-executeBatch

Java PreparedStatement-executeBatch,java,mysql,prepared-statement,Java,Mysql,Prepared Statement,我正在使用executeBatch写入数据库批量大小为50。 long startt = System.currentTimeMillis(); da.writeAll(batchRaiseRecords); LoggerClient.writeError("DML write sendDML - " + (System.currentTimeMillis() - startt) + " - size - " + batchRaiseRecords.size(),""); 现在,此操作所用的时

我正在使用executeBatch写入数据库批量大小为50。

long startt = System.currentTimeMillis();
da.writeAll(batchRaiseRecords);
LoggerClient.writeError("DML write sendDML - " + (System.currentTimeMillis() - startt) + " - size - " + batchRaiseRecords.size(),"");
现在,此操作所用的时间从0.2秒到6秒不等。我的疑问是为什么会有这么多的变化

Line 2246: DML write sendDML - 362555602 - size - 50, 
Line 3960: DML write sendDML - 609145666 - size - 50, 
Line 6034: DML write sendDML - 1398866678 - size - 50, 
Line 7676: DML write sendDML - 324071619 - size - 50, 
Line 9398: DML write sendDML - 492674501 - size - 50, 
Line 11180: DML write sendDML - 632663209 - size - 50, 
Line 14926: DML write sendDML - 6776384464 - size - 50, 
Line 16542: DML write sendDML - 384737523 - size - 50, 
Line 17896: DML write sendDML - 287436213 - size - 50, 
Line 18730: DML write sendDML - 206414079 - size - 50, 
Line 19548: DML write sendDML - 288492245 - size - 50, 
Line 20382: DML write sendDML - 310753856 - size - 50, 
Line 21212: DML write sendDML - 695180583 - size - 50, 
Line 22466: DML write sendDML - 232818139 - size - 50, 
Line 23360: DML write sendDML - 246089140 - size - 50, 
Line 24420: DML write sendDML - 192751420 - size - 50, 
我试过很多次这个手术,结果差不多

为什么在相同的操作中有如此多的变化executeBatch()


EDIT:DML用于写入MySql数据库。而且只有一个客户端。

您使用的是哪个JDBC驱动程序和数据库?有多少并发客户端?此外,这可能是.What is
da.writeAll()
?延迟可能来自
LoggerClient.writeError()
。很难说,没有足够的信息。和Logger.writeError没有引起问题。这是本地数据库还是远程数据库?另外,每批的大小(如字符数/字节数)如何。如果这是针对相同的数据库/表运行的,那么只有网络延迟/有效负载的实际字节大小可能会导致这种情况和其他情况。您是从事务中显式还是隐式执行这项工作?