banner
Hi my new friend!

Mysql中的锁机制

Scroll down
  • MySQL中有哪些锁
    全局锁, 表级锁(表锁,意向锁,元数据锁(DML时),AUTO-INCE锁),行级锁(记录锁,间隙锁,Nect-key Lock)
    乐观锁(Mvcc), 悲观锁

全局锁主要应用于全库逻辑备份

  • 什么是意向锁
    意向锁是加在表上的锁,分为共享意向锁和独占意向锁,这个锁不需要使用者显式加,当操作数据库时数据库会自动加锁.
    在对数据加共享锁时,会为其表加上共享意向锁. (ex: 查询某表数据时)
    在对数据加独占锁时,会为其表加上独占共享锁. (ex: 更新某表中数据时)
    如此,可以快速判断表中是否有共享锁,独占锁,否则当想要对表加共享锁/独占锁时,就需要遍历记录,看有没有记录被加了行级锁

    注意:普通的select是不会加锁的,mvcc机制(乐观锁). 除非是select … from tablename lock in share mode

  • mysql如何避免死锁
    死锁的四个条件: 互斥,占有并等待,非抢占,循环等待
    Mysql有两种方法来避免死锁

  1. 设置锁等待超时时间
    当一个事务等待时间超过该值时,就会回滚该事务,从而其他的事务就可以向前推进了.默认值是50s
  2. 开启自动死锁检测(默认是开启的)
    会自动检测是否死锁,如果有,则回滚死锁链中某一事物
其他文章