首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阻止对给定外键的查询,直到该外键的所有插入完成

问阻止对给定外键的查询,直到该外键的所有插入完成
EN

Stack Overflow用户
提问于 2013-08-11 19:34:24
回答 1查看 82关注 0票数 0

我有两个工作人员在一个相对较大的(约6000万行) MySQL表上进行并行插入/选择。

  1. Worker 1插入一个新行并对包含新行的外键的消息进行队列。对于给定的外键值,这种情况大约每天发生一次。
  2. Worker 2对消息进行排队,查询表中外键的最新记录,并进一步处理它。

看来,工作人员2往往没有从表中获得最新的记录。是否有方法阻止工作人员2对给定外键的查询,直到该外键的插入完成为止?

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-11 21:14:34

我可能缺少一些关键的信息来精确回答,但是.

..。我的猜测是,在一个事务中对DB所做的更改在另一个事务中可见之前,“消息”就到达了。

请记住,根据事务隔离级别(1),在成功提交事务之前,不会将更改传播到DB。在启动新事务之前,DB的新状态是不可见的。

即使如此,据我所知,MySQL并不保证任何“传播延迟”。而且我认为在MySQL中没有任何机制可以发出除事务已成功提交的其他连接的信号,而且更改现在是可见的。

我不了解您的系统,但作为一个建议,我不认为使用消息队列来表示更改,但是使用MySQL存储实际的更改数据是一个很好的解决方案。如果我是你,我会看一看像RabbitMQ这样的适当的消息传递系统,它不仅允许发出改变的信号,而且还将携带新的状态--几乎(如果不是全部的话)与关系数据库管理系统的保证相同。也许您可以重构您的应用程序,以便使用消息队列来处理更改,并且只需完成一次,就可以使用MySQL永久存储数据。

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

https://stackoverflow.com/questions/18175898

复制
相关文章

相似问题

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