手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

Thinkphp5满足大并发实现mysql锁机制

时间:2024-10-21 09:39:33

1、使用场景举例:以MySQL InnoDB为例

2、商品goods表,假设商品的id为2,购买数量为1,status为1表示上架中,2表示下架。现在用户购买此商品,在不是高并发的情况下处理逻辑是:

3、查找此商品的信息;

4、检查商品库存是否大于购买数量;

5、修改商品库存和销量;

6、上面这种场景在高并发访问的情况下很可能会出现问题。如果商品库存是100个,高并发的情况下可能会有1000个同时访问,在到达第2步的时候,都会检测通过。这样会出现商品库存是-900个的情况。显然着不满足需求!!!

7、使用悲观锁在处理。当我们在查询出goods信息后就把当前的数据锁定,直到我们修改完毕后再解锁。那么在这个过程中,因为goods被锁定了,就不会出现有第三者来对其进行修改了。

8、注:要使用悲观锁,我们必须关闭mysql数据库的自动提交属性,因为MySQL默认使用autocommit模式,也就是说,当你执行一个更新操作后,MySQL会立刻将结果进行提交。

9、不使用锁的代码

Thinkphp5满足大并发实现mysql锁机制

10、使用锁的代码

Thinkphp5满足大并发实现mysql锁机制
© 手抄报圈