文章目录
1.Mysql锁设计理念
1.数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,
为了保证数据的一致性,数据库需要合理地控制资源的访问规则
。而锁就是用来实现这些访问规则的重要机制。
2.MySQL锁机制的初衷便是如此,当然,MySQL数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎所针对的应用场景特点都不太一样,为了满足各自特定应用场景的需求,每种存储引擎的锁定机制都是为各自所面对的特定场景而优化设计,所以各存储引擎的锁定机制也有较大区别。
2.Mysql锁的分类
-
按锁粒度从大到小分类:
表锁
,页锁
和行锁
;以及特殊场景下使用的全局锁
-
如果按锁级别分类则有:
共享(读)锁
、排他(写)锁
、意向共享(读)锁
、意向排他(写)锁
; -
以及Innodb引擎为解决幻读等并发场景下事务存在的数据问题,引入的
Record Lock(行记录锁)
、Gap Lock(间隙锁)
、Next-key Lock(Record Lock + Gap Lock结合)
等; -
还有就是我们面向编程的两种锁思想:悲观锁、乐观锁。