mysql锁机制

2020-05-26  本文已影响0人  码农GG

一.定义

image.png

二.分类

1.从数据操作的类型(读、写)分:
读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响
写锁(排它锁):当前写操作没有完成前,它会阻断其他写锁和读锁。

2.从对数据操作的颗粒度:
表锁
行锁

三.三锁

1.表锁:
1.1特点:偏向MyISAM存储引擎,开销小,加锁快,无死锁,锁定粒度大,发生锁冲突的概率最高,并发最低

1.2.案例分析

image.png

1.3加读锁

image.png image.png image.png

1.4加写锁

image.png image.png

1.5结论分析

image.png

1.6表锁分析

image.png

2.行锁
2.1 特点
偏向InnoDB存储引擎,开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION);二是采用了行级锁

2.2事务(Transation)及其ACID属性

image.png

2.3并发事务处理带来的问题
更新丢失(Lost Update)
脏对(Dirty Reads)
不可重复读(Non-Repeatable Reads)
幻读(Phantom Reads)

2.4事务隔离级别

image.png

2.5案例分析

image.png

2.6无索引行锁升级为表锁
varchar 不用 ' ' 导致系统自动转换类型, 行锁变表锁

2.7间隙锁危害

image.png

2.8行锁分析

image.png image.png

2.9优化建议
1)尽可能让所有数据检索都通过索引来完成,避免无索引行锁升级为表锁。
2)合理设计索引,尽量缩小锁的范围
3)尽可能较少检索条件,避免间隙锁
4)尽量控制事务大小,减少锁定资源量和时间长度
5)尽可能低级别事务隔离

3.页锁
了解

上一篇 下一篇

猜你喜欢

热点阅读