旁addBatch()
的方法PreparedStatement
还有一个addBatch(String)
在该方法中Statement
的类。
我要处理一系列不同的SQL语句,并正在寻找一些澄清什么addBatch(字符串)指的性能代价。 它是安全的(和快速)使用此方法还是更将类似的SQL语句中使用Java和集团执行呢?
旁addBatch()
的方法PreparedStatement
还有一个addBatch(String)
在该方法中Statement
的类。
我要处理一系列不同的SQL语句,并正在寻找一些澄清什么addBatch(字符串)指的性能代价。 它是安全的(和快速)使用此方法还是更将类似的SQL语句中使用Java和集团执行呢?
批处理,您可以将相关的SQL语句组合成一个批次,并与一个调用数据库提交。
当您发送几个SQL语句到数据库一次,可以减少通信开销的量,导致提高性能。
addBatch(String sql)
在接口中定义java.sql.Statement
和addBatch()
中被定义java.sql.PreparedStatement
是子接口的一个extends Statement
。 (其他是java.sql.CallableStatement
)
据JAVA文件
addbatch(String sql)
方法不能叫上PreparedStatement
或CallableStatement
和sql -通常这是一个SQL INSERT
或UPDATE
语句。
addBatch()
是首选。如果你想批量插入或批量更新操作。
有批次exections几阻塞因素是
DB make/version.
JDBC driver make/version.
例如:如果你使用MySQL,使用最新的驱动程序rewriteBatchedStatements = TRUE添加到您的连接字符串,使statement.addBatch()实际上创建批量插入。
此外,你应该确保自动提交是假的。 维护一个计数器,并达到对计数器则ExecuteBatch有助于当可用的Java堆内存的限制。
例:
conn.setAutoCommit(false);
PreparedStatement pStmt = conn.prepareStatement("INSERT INTO mytable (field1,field2) VALUES (?,?)");
for all values:
pStmt.setString(1,val1);
pStmt.setString(2,val2);
pStmt.addBatch();
if ( i % 1000 == 0) {
pstmt.executeBatch();// Execute every 1000 items
}
pstmt.executeBatch();
conn.commit();