今天我们来聊聊MySQL中InnoDB存储引擎的锁。
锁是数据库系统系统区别于文件系统的一个关键特性。
lock和 latch
latch
latch
在MySQL中是用来保证并发多线程操作操作临界资源的锁
,锁定的对象线程,是和咱们使用的Java等传统语言中的锁意义相近,而且没有死锁检测的机制。
lock
lock
是MySQL中在事务中使用的锁
,锁定的对象是事务,来锁定数据库中表、页、行;通常只有在事务commit或者rollback后进行释放。lock是有死锁机制的,当出现死锁时,lock有死锁机制来解决死锁问题:超时时间(参数innodb_lock_wait_timeout
)、wait-for graph
。
我们通常讲的MySQL的“锁”,一般就是说的lock。
以下就是InnoDB中“锁”的大分类: