首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL:为并发用户选择first和update

SQL:为并发用户选择first和update
EN

Stack Overflow用户
提问于 2016-01-29 09:06:48
回答 1查看 116关注 0票数 0

TL;DR:我希望我的数据库中有一个表作为优先级队列(这里是ID上的一个分钟队列),是否有任何免费的(用于商业用途的) DBMS可以解决我的问题?查询会是什么样的呢?

我希望有许多并发用户从一个表中选择一个行,例如,我有这个表

代码语言:javascript
复制
+------+-------+--------+------------+
| ID   | Col 1 | Col 2  | Processed  |
+------+-------+--------+------------+
| 1000 | data  | data   | False      |
+------+-------+--------+------------+
| 1001 | data  | data   | False      |
+------+-------+--------+------------+
| 1002 | data  | data   | False      |
+------+-------+--------+------------+

如果我有3个用户,我希望执行原子SELECTUPDATE,这样第一个查询将从具有最低ID的行返回Col 1Col 2,并将Processed标记为True,这样下一个查询将返回带有ID = 1001的行。

预计该表将很小,即最多100,000行,队列预计将在大约8小时内清空(大约每秒3-4个查询,峰值可能是每秒50次左右的查询)。我习惯了PostgreSQL/MySQL,并曾短暂地使用过MongoDB。

我应该如何设计我的系统来处理这个问题呢?查询会是什么样的呢?一张桌子锁能被注意到吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-29 09:35:43

我认为PostgreSQL应该是一个很好的候选人。

一些有趣的提示:

除非我遗漏了什么,否则每个线程都会执行一个SELECT FOR UPDATE (使用SKIP ROW LOCKED),这样它就可以选择第一个未锁定的行,并为其他人锁定它,处理它,并在完成之后标记/删除它。

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

https://stackoverflow.com/questions/35080611

复制
相关文章

相似问题

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