mysql使用for update实现悲观锁


  • 悲观缩:顾名思义比较担心害怕,还没开始就怕出现并发,所以在处理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会锁住整张表。

    查询不受影响


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM