首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有低延时重试机构的锁获取

具有低延时重试机构的锁获取
EN

Stack Overflow用户
提问于 2022-02-02 07:55:40
回答 1查看 108关注 0票数 -1

我正在开发一种数据处理产品,有些并发用户要求在特定状态下处理这些数据。

代码语言:javascript
复制
For example, users can ask to assign me a data-id where status is `Not_Assigned` or `In_Review`. 

由于可能存在并发请求,而且每个人都应该获得唯一的Id,所以我考虑使用数据库锁定,但在这种情况下,如果线程无法获得锁事务将导致失败,并且控制返回到应用程序,应用程序将尝试获取新的Id,因此最终用户将面临更高的延迟。有人能指导我一个更好的方法来解决这个问题,或者指导我如何解决类似的问题吗?

作为参考,我的样本数据如下所示。

代码语言:javascript
复制
Data_id | Status       | UserId
   1    | Not_Assigned | NULL
   2    | REVIEW       | 1
   3    | DONE         | 2
   4    | Not_Assigned | NULL
   5    | Not_Assigned | NULL

因此,如果有两个用户来请求具有Not_Assigned状态的数据,他们应该从(1,4,5)获得唯一的id,我可以通过在DB上添加一个锁来处理这个id。

EN

回答 1

Stack Overflow用户

发布于 2022-02-03 22:03:27

如果使用AUTO_INCREMENT列分配新is,则不会出现任何并发问题。

如果使用其他机制,请确保使用InnoDB、START TRANSACTIONCOMMIT,并在必要时使用SELECT ... FOR UPDATE

总是在任何查询后检查错误。错误(如并发问题)可能在事务内部发生。计划重新运行整个事务。

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

https://stackoverflow.com/questions/70952115

复制
相关文章

相似问题

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