• 技术文章 >数据库 >MySQL

    mysql临键锁的使用

    小妮浅浅小妮浅浅2021-10-22 10:07:33原创3442

    1、默认情况下,innodb使用临键锁锁定记录。

    select ... for update

    2、当查询索引包含唯一属性时,临键锁将被优化并降级为记录锁,即只锁定索引本身,而不是范围。

    3、不同场景下的临键锁会退化。

    实例

    事务1
     
    start transaction;
    select SLEEP(4);
    select * from test where age=22 for update;
    select * from test where age>23 for update;
    select sleep(20);
    commit;
     
    **************************
    事务2
     
    start transaction;
    select sleep(8);
    select * from test where age=20 for update;
    select * from test where age=21 for update;
    select * from test where age=22 for update;
    select * from test where age=23 for update;
    commit;
     
     
    ************************************
    事务执行状态
     
    事务1
     
    start transaction
    > OK
    > 时间: 0s
     
     
    select SLEEP(4)
    > OK
    > 时间: 4.001s
     
     
    select * from test where age=22 for update
    > Affected rows: 0
    > 时间: 0.001s
     
     
    select * from test where age>23 for update
    > Affected rows: 0
    > 时间: 0.001s
     
     
    select sleep(20)
    > OK
    > 时间: 20s
     
     
    commit
    > OK
    > 时间: 0.001s
     
     
    ***********************
    事务2
     
    start transaction
    > OK
    > 时间: 0.001s
     
     
    select sleep(8)
    > OK
    > 时间: 8s
     
     
    select * from test where age=20 for update
    > Affected rows: 0
    > 时间: 0.001s
     
     
    select * from test where age=21 for update
    > Affected rows: 0
    > 时间: 0.001s
     
     
    select * from test where age=22 for update
    > Affected rows: 0
    > 时间: 14.158s
     
     
    select * from test where age=23 for update
    > Affected rows: 0
    > 时间: 0.001s
     
     
    commit
    > OK
    > 时间: 0s

    以上就是mysql临键锁的使用,希望对大家有所帮助。更多mysql学习指路:MySQL

    推荐操作系统:windows7系统、mysql5.8、DELL G3电脑

    专题推荐:mysql 临键锁
    上一篇:mysql间隙锁的用法 下一篇:mysql插入意向锁的使用

    相关文章推荐

    • mysql中查询的请求过程• mysql中查询优化器的操作• mysql中正则表达式是什么• mysql中regexp_instr函数的使用• mysql中regexp_substr函数的使用• mysql中regexp_replace函数的使用• mysql全局锁如何使用• mysql元数据锁是什么• mysql间隙锁的用法

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网