锁的由来
我们需要最大程度地利用数据库的并发访问,还需要确保每个用户以一致性的方式读取和修改数据,为解决此问题,有了锁的机制
InnoDB 存储引擎相对比MySQL 数据库的其他存储引擎在这方面要技高一筹
MySQL 常用引擎:InnoDB、MyISAM、Memory
锁机制用于管理对共享资源的并发访问,为了保证数据一致性和完整性,必须要有锁的介入
MySQL InnoDB 锁的基本类型
有两个概念的锁lock 和latch,这里着重聊聊lock 锁
latch 轻量级的锁,因为其要求锁定的时间必须非常短,如果持续的时间长,则应用的性能会非常差。在InnoDB 引擎中,latch 可以分为mutex(互斥)和rwlock(读写锁)。用来保证并发线程操作临界资源的正确性,并且没有死锁检测的机制
lock 的对象是事务,用来锁定数据库中的对象,如表、页、行。lock 是在事务commit 或rollback 后进行释放
在InnoDB 存储引擎中的latch,可以通过命令来进行查看
show ENGINE INNODB MUTEX;
MySQL InnoDB 锁的基本类型
两个行级别的锁(Shared and Exclusive Locks)和两个表级别的锁(Intention Locks)称为锁的基本模式
后面三个 Record Locks、Gap Locks、Next-Key Locks,我们把它们叫做锁的算法
锁的粒度
在InnoDB 里面既有行级别的锁,又有表级别的锁,来看下两者的区别
表锁:锁住一张表
<