• MySQL锁的定义


    InnoDB是行锁还是表锁取决于SQL语句,行锁是实现在索引上的,而不是锁在物理行记录上,如果没有命中索引,则退化为表锁。行锁不容易被发现,比较狡猾,因为它超时时间是50秒,可以通过ER_LOCK_WAIT_TIMEOUT EXCEEDED错误发现。发生原因有select for update,lock for share,lock in share等。
    间隙锁是为了解决幻读,事务隔离级别是可重复读的情况,比如slect from where id >10 and id<20 for update,但是比更新id=12会失败,因为12正好在这个区间里面。
    next-key lock相当于行锁加上间隙锁,还是上面的情况它包含(无穷小,10),(10,20),[20,无穷大)所有区间。

    在rc(read committed)事务模式下,间隙锁gap lock的粒度要比rr事务模式下锁的粒度小的多,当事务是rc时,间隙锁只锁住(-∞,5),行锁是id=5,而在事务是rr时,间隙锁是(-∞,5),(5,∞),范围更大,并发性能降低。next-key锁是行锁和间隙锁的组合,只有在事务是rr时才生效,是(-∞,5],(5,∞)。

  • 相关阅读:
    CLRS 10.28
    [转]教你如何查看各种浏览器的Cookies[IE cookies信息]
    红黑树c实现
    ubuntu下eclipse中键盘失灵
    putty中文乱码解决
    [ 转]关于linux下wireshark启动时Lua报错
    c/c++运算符优先级
    CLRS 10.45
    ubuntu 12.04 安装NS2
    SQL IsDate()
  • 原文地址:https://www.cnblogs.com/nizuimeiabc1/p/15756189.html
Copyright © 2020-2023  润新知