首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大规模MySQL更新

大规模MySQL更新
EN

Stack Overflow用户
提问于 2013-03-12 15:52:06
回答 1查看 248关注 0票数 4

我编写了一个服务器可以使用的应用程序。此应用程序收集信息,并将其发送到服务器。每10秒做一次。数据的数量取决于玩家的发挥,但是让它保持在大约50个服务器上,每个服务器发送100条数据(总共每10秒5000条)。

这些数据片段存在于SQL查询(以PreparedStatement语法表示)、值的Object[]和serverID中。

现在,我要处理所有的数据。这就是对我不好的地方。我有一个MySQL服务器,它有5个表。其中三个表在不断更新,无法跟上数据流。这些表是InnoDB表,主要是因为我可以通过这种方式进行行级锁定,而不是表锁。大多数查询都是UPDATE查询,几乎没有任何INSERT语句。

我已经尝试过立即执行所有的查询,这只会导致糟糕的性能,因为连接服务器也必须等待它完成。

我还尝试将所有查询放入一个大型ConcurrentLinkedQueue中,并每隔几秒钟清空该队列。表演更好,但太慢了。

然后,我尝试了一种按表计算的解决方案,这又稍微好了一点。还是太慢了。

目前,它使用的是每台服务器的设置(为每个服务器创建一个新的thread,并执行那里的所有查询)。这还是太慢了。它跟不上。

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

对怎么做有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-07 14:09:16

我使用spring,使用com.jolbox.bonecp进行连接。我想推荐你用同样的。

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15365856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档