目录
一、锁的作用
二、锁分类
三、 乐观锁
(1) 定义
很乐观。每次去拿数据的时候都认为别人不会修改,所以不会上锁。等到数据进行提交更新的时候,才会正式对数据的冲突与否进行检测
(2) 两种实现方式
1. 版本号机制
表增加一个数字类型的 “version” 字段,每更新一次,对此version值加1,更新时如果当前version与第一次取出来的version值相等,则予以更新,否则认为是过期数据
2.CAS算法(一种无锁算法)
四、悲观锁
(1)定义
很悲观。每次去拿数据的时候都认为别人会修改,所以每次拿数据的时候都会上锁(依靠数据库的锁机制)
(2)按锁粒度分类
0.分三类
锁粒度即锁级别,级别越高粒度越大。分为行锁、页锁、表锁(粒度依次变大)
1.行锁
1)行锁分类
行锁的定义:访问数据库的时候,锁定整个行数据(实际锁的是该行相关数据列的索引),防止并发错误。
2)记录锁
SELECT * FROM 表名 WHERE age=60 FOR UPDATE; //此时id=60这条记录被锁住(上了排他锁)。注意,如果age有索引就锁的是age=60这列age的索引,没有就锁住整张表,变成表锁了