Java 多重插入加速

Java 多重插入加速,java,mysql,Java,Mysql,我正在解析大型日志文件(5+GB)并提取临时放置的分析行(调用名和执行时间)。我想将这些行插入MySql数据库 我的问题是:我应该在每次解析时得到行时执行insert语句,还是有一些最佳做法可以加快速度?有更好的选择。 看 在您的情况下,我认为将相关记录写入文件,然后使用加载数据填充是最好的方法 如果有任何方法可以进行批量插入,那将非常有帮助(或者至少可以将数据批量发送到数据库,而不是每次单独调用) 编辑 加载数据填充听起来更快;o) 对于小型更新,事务数对性能至关重要。因此,如果您可以在同一事

我正在解析大型日志文件(5+GB)并提取临时放置的分析行(调用名和执行时间)。我想将这些行插入MySql数据库

我的问题是:我应该在每次解析时得到行时执行insert语句,还是有一些最佳做法可以加快速度?

有更好的选择。 看


在您的情况下,我认为将相关记录写入文件,然后使用加载数据填充是最好的方法

如果有任何方法可以进行批量插入,那将非常有帮助(或者至少可以将数据批量发送到数据库,而不是每次单独调用)

编辑

加载数据填充听起来更快;o)


对于小型更新,事务数对性能至关重要。因此,如果您可以在同一事务中执行多个插入,那么它将运行得更快。我会先尝试每个事务插入100次。

如果您不想遵循Galz链接中的建议(这是非常好的一点),请尝试打开连接并准备语句一次,然后循环执行插入的日志文件(使用预制语句),最后在结束时关闭语句和连接一次。这不是执行插入的最快方法,但它是坚持“正常”JDBC方法的最快方法。

来自java

例如: 每次插入时都要执行此操作:

每批都要这样做


批处理的大小可以由可用内存决定。

除了插入速度之外,您可能遇到的另一个问题是内存。无论使用什么方法,当记录从文件加载时,仍然需要考虑内存使用情况。除非您对处理速度有严格要求,否则最好使用具有可预测内存足迹的方法。

+1对于
加载数据填充
建议(只需确保权限设置为允许)。实现:非常快。Thx很多。请确保该表上没有唯一的键,否则即使使用
加载数据填充
@Jon,插入速度也会非常慢-另一个最受欢迎的方法是