【发布时间】:2019-06-22 06:34:43
【问题描述】:
假设有一个包含单个字段的文档:{availableSpots: 100}
并且有数百万用户通过向 API 服务器发送请求来争夺一席之地。
每次请求到来时,服务器都会读取文档,如果 availableSpot > 0,则将其减 1,并在另一个集合中创建预订。
现在我读到,每当执行更新操作时,mongodb 都会锁定文档。
如果有一百万个并发请求会发生什么?是否会因为同一个文档一直被锁定而需要很长时间?此外,服务器在尝试更新文档之前读取文档的值,并且在它获取锁时,该位置可能不再可用。
线程在同一时刻获得“availableSpot > 0”也是可能的,但实际上availableSpot 可能不足以满足所有请求。如何处理?
【问题讨论】:
标签: mongodb concurrency mongodb-java