如何将Writes并行化到MySQL中的同一行?

时间:2012-10-11 18:55:51

标签: mysql parallel-processing deadlock database-deadlocks

我目前正在构建一个运行计算的系统,并且每隔5秒就会根据这些计算将信息插入或更新到MySQL中的几行。我正在努力立即在几个不同的服务器上运行这个系统,有几个代理,每个代理执行类似的处理,然后在同一组行上写。我已经随机化了每个代理写入其行集的顺序,但仍然发生了很多死锁。解决这些僵局的最佳/最快方法是什么?我应该在每次发生时重新运行查询,还是完成行锁或其他内容?

1 个答案:

答案 0 :(得分:0)

我建议您尝试一些不需要多个客户端来更新“几行”的内容。

例如,您可以让每个生成结果的代理使用MEMORY访问方法对临时表执行INSERT

然后,每隔五秒就可以运行一个MySQL事件(服务器中的存储过程),该事件遍历该表中的所有行,将结果发布到“几行”然后删除它们。如果按顺序处理临时表中的行很重要,则可以使用AUTO_INCREMENT id字段。但对他们来说可能并不重要。

如果你想获得更高级和更高的可扩展性,你需要一个像Apache ActiveMQ这样的队列管理系统。