我一直在尝试了解亚马逊将如何处理并发写入问题,例如当多个用户尝试购买可用数量只有一件的同一产品时。
考虑到“产品”表具有以下字段:
我正在寻找有关数据库事务和锁定的详细解释,或者以更详细的技术术语处理这种情况的任何其他方法。
假设当 2 位用户在购物车中添加了相同的产品并且一位用户继续付款时:
A)
开始交易
从产品中选择 *,其中 ID = 1 且状态 =“可用”进行更新;
将产品表中的数量字段更新为“0”且状态 =“已售完”
调用支付网关
如果付款超时 回滚
犯罪
结束交易
=================================================== ========================= 当上述事务仍在进行时,其他用户仍然可以看到可用的产品,因为它仍未提交,他们可能会也继续付款。
此外,如果有足够数量的产品可用,锁定产品行可能会阻止其他用户同时尝试购买相同的产品。
=================================================== =========================
如何处理这个问题?
我已阅读以下关于在数据库上使用乐观锁定的博客,但发现很难深入理解到底如何实现。