我有 2 台服务器,一台带有使用 Spring 进行 DB 连接处理的 Java 应用程序,另一台带有 MySQL。两台服务器之间的 Ping 延迟约为 100 毫秒。
Java 服务器一次使用批量插入数据库,2000 行。执行此批量插入似乎需要 100 毫秒 x 2000 次插入 = 200,000 毫秒!
有没有办法最小化这种网络延迟?使用事务有助于减少它吗?
任何想法都非常感谢。
我有 2 台服务器,一台带有使用 Spring 进行 DB 连接处理的 Java 应用程序,另一台带有 MySQL。两台服务器之间的 Ping 延迟约为 100 毫秒。
Java 服务器一次使用批量插入数据库,2000 行。执行此批量插入似乎需要 100 毫秒 x 2000 次插入 = 200,000 毫秒!
有没有办法最小化这种网络延迟?使用事务有助于减少它吗?
任何想法都非常感谢。
交易只会给你更多的开销。(尽管这当然并不意味着您不应该使用它们。)我认为批量处理可能会有所帮助。这将减少为每个插入建立新网络连接的开销。如果可能,您还可以考虑在 Java 服务器上缓存内容;虽然这只会有助于读取,而不是写入。
就像其他答案所说,尝试使用批处理。但如果 MySQL JDBC 驱动程序不优化它们,它就无济于事。有关其他潜在解决方案,请参见此处的答案:JDBC 批量插入性能