mysql使用for update实现悲观锁

我们两清 提交于 2019-11-27 10:13:40
  • 悲观缩:顾名思义比较担心害怕,还没开始就怕出现并发,所以在处理sql之前就将表或具体数据给上锁。
  • 使用for update测试
  • 表数据
  • 表结构

  • 测试

  • 1)sql:

    set autocommit=0;
    BEGIN;
    SELECT * FROM `user` WHERE `name`='zhangsan' for UPDATE;
    -- COMMIT;

  • 1-1)结果

    查询不受影响,整表都被锁住

  • 2)sql:

     

  • 2-1)结果

     

  •  

  • 条件为主键时条件行被锁,查询不受影响
  • 总结:

    当for update的条件字段为索引或者主键的时候,只会锁住索引或者主键对应的行。

    而当for update的字段为普通字段的时候,Innodb会锁住整张表。

    查询不受影响
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!