JDBC到极限

JDBC to the limit

我正在使用 java.sql.Connection.setAutoCommit(false)java.sql.PreparedStatement.addBatch() 进行一些批量插入。我猜想在提交之前可以安全地执行多少正确的 insert/update 语句?例如,在提交之前执行 100.000 次插入可能会导致 JDBC 驱动程序投诉或内存泄漏或其他问题?我想在提交之前我可以执行多少条语句是有限制的,我在哪里可以找到这样的信息?

没有 DML 语句的数量限制。您推送到数据库的每个 INSERT/UPDATE/DELETE 实际上仅在数据库中被跟踪。因此不会像您提到的那样出现任何内存泄漏。 JDBC 中的内存泄漏通常只与未关闭的结果集或准备好的语句有关。

但另一方面,没有 COMMITDML 操作太多,可以在数据库中进行如此多的日志记录。这可能会影响其他操作的性能。当您在 INSERTs 百万 之后发出 COMMIT 时,其他操作如 INDEX 分析、数据复制(如果有)会带来更多开销到 DBMS。这些要点仍然是完全 DBMS 具体的。 JDBC驱动无关