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锁机制
  • 如何查看电脑硬盘序列号
  • 如何获取电脑硬盘的序列号
  • 电脑硬盘序列号怎么查看 查看硬盘序列号的方法
  • VScode中如何在当前位置上面添加光标
  • 批处理打开cmd窗口
  • 热门搜索
    环保手抄报图片大全 关于文明的手抄报 初中手抄报 民族手抄报 建党节手抄报简单内容 十分简单的读书手抄报 少先队手抄报 有趣的汉字手抄报 热爱祖国手抄报 劳动手抄报内容