秒懂InnoDB的锁

今天我们来聊聊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中“锁”的大分类:

秒懂InnoDB的锁_第1张图片

lock的种类

MySQL Lock大体上可以分为:表锁、行锁、意向锁三种。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vFuO9EVr-1572092822108)(https://i6448038.github.io/img/mysql_lock/Locks.png)]

共享/排他锁

行锁分为:S Lock

你可能感兴趣的:(面试哪些事儿,后端,Mysql,锁,面试,研发)