2

我目前正在构建一个运行计算的系统,并且每 5 秒将基于这些计算的信息插入或更新到 MySQL 中的几行。我现在正在使用几个代理同时在几个不同的服务器上运行这个系统,每个代理都在做类似的处理,然后在同一组行上写入。我已经随机化了每个代理写入其行集的顺序,但是仍然发生了很多死锁。解决这些僵局的最佳/最快方法是什么?我应该在每次发生查询时重新运行查询,还是执行行锁,或者完全是其他事情?

4

1 回答 1

0

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

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

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

如果您想获得比这更高级和更可扩展的功能,您将需要像 Apache ActiveMQ 这样的队列管理系统。

于 2012-10-11T19:16:33.867 回答