毕业后第一次做的项目就是电商,但是当时也不明白这个问题
所以给自己埋下一個坑。
先说说当初的做法和遇到的问题。
//如果大于购买数量进入购买如果小于返回错误 并rollback
当两个人 同时下单,同时进入事务 这个时候兩个人查的数量是相同的以下为模拟
步骤1=》用户1:查询item 数量为5
步骤2=》用户2:查询item 数量为5
步骤3=》用户1:买了五个将item的数量减5 并且成功
步骤4=》用户2:买了五个将item的数量减5 由于mysql增加一列数据的自身锁的问题 (因为用户1 没有提交 所以用户2 需要等待用户1 commit 才能真正的修改成功)
步骤5=》鼡户1:commit 成功修改数量并且成功购买
步骤6=》用户2:等待状态解除,将item的数量也成功减5 数量变为-5
这个时候其他用户是无法查询到的
这是目前悝解的两种方法,不过不明白这里面的具体性能问题是怎么样的也不清楚哪个方案更好。
在这里 也不讲述乐观锁和悲观锁了 因为本人也並不是完全理解 待我去寻摸一本书弄明白了 在补充