java – 大规模MySQL更新

我写了一个服务器可以使用的应用程序.此应用程序收集信息,并将其发送到服务器.这是每10秒完成一次.数据量取决于播放器,但让它保持在大约50台服务器上,每台服务器发送100条数据(每10秒钟共计5000条).这些数据存在SQL...

我写了一个服务器可以使用的应用程序.此应用程序收集信息,并将其发送到服务器.这是每10秒完成一次.数据量取决于播放器,但让它保持在大约50台服务器上,每台服务器发送100条数据(每10秒钟共计5000条).

这些数据存在SQL查询(在PreparedStatement语法中),SQL查询值的Object []和serverID.现在,我想处理所有数据.而这对我来说并不顺利.我有一个MySQL服务器,有5个表.其中三个表不断更新,无法跟上数据流.这些表是InnoDB表,主要是因为我可以通过这种方式进行行级锁定,而不是表锁.无论如何,大多数查询都是UPDATE查询,几乎没有任何INSERT语句.

我已经尝试过立即执行所有查询,这只会导致可怕的性能,因为连接服务器也必须等待完成.
我还尝试将所有查询放在一个大的ConcurrentLinkedQueue中,并每隔几秒清空一次这个队列.性能更好,但这太慢了.
然后我尝试了一个每表解决方案,再次稍好一点.方式太慢了.目前,它使用的是每服务器设置(为每个服务器创建一个新线程并在那里执行所有查询).这仍然太慢了.它无法跟上.

如你所见,我尝试过很多东西.我也尝试使用addBatch(),然后使用executeBatch(),它也在当前设置中使用.当然,我也看过这里,谷歌等等.有一些有用的信息,但主要是关于添加PreparedStatements和使用BatchUpdates.

关于如何做到这一点的任何想法?

解决方法:

我使用spring-jdbc,并使用com.jolbox.bonecp进行连接.我想建议你使用它.

我使用jdbcTemplate.batchUpdate(query,multyPreparedValues),其中multyPreparedValues是List< Object []>

但您也可以使用BatchPreparedStatementSetter – 示例https://stackoverflow.com/a/8873528/814304

本文标题为:java – 大规模MySQL更新

基础教程推荐