【发布时间】:2019-04-17 10:15:06
【问题描述】:
我有一个 JDBC 应用程序,要将插入语句转换为批处理,我在 MySQL 连接字符串中使用了rewriteBatchedStatements=true,但我还需要将批处理大小限制为 100。我该怎么做?
【问题讨论】:
我有一个 JDBC 应用程序,要将插入语句转换为批处理,我在 MySQL 连接字符串中使用了rewriteBatchedStatements=true,但我还需要将批处理大小限制为 100。我该怎么做?
【问题讨论】:
在服务器端max_allowed_packet 将限制INSERT 被rewriteBatchedStatements 拼凑在一起的数量。根据5.1.8 Server System Variables:
一个数据包或任何生成/中间字符串的最大大小,或 mysql_stmt_send_long_data() C API 函数发送的任何参数。默认为 64MB。
如果您需要更细粒度的控制,您必须使用 JDBC,例如在每 N 行之后调用 executeBatch()。
【讨论】:
您可以每尝试插入 100 行提交当前事务(或刷新会话)。
【讨论】: