一、基本概念
1.隔离级别
- READ UNCOMMITED
- READ COMMITTED
? Oracle、DB2、Microsoft SQL Server (默认)
? 解决脏读 - REPEATABLE READ
? InnoDB(默认)
? 解决脏读、不可重复读
? InnoDB中的RR解决了幻读问题 - SERIALIZABLE
? 解决脏读、不可重复读和幻读
2.锁的算法
- Record Lock:单个行记录上的锁
- Gap Lock:锁定一个范围,但不包含记录本身
- Next-Key Lock:Gap Lock + Record Lock,锁定一个范围,并且锁定记录本身
3.锁与并发
- locking (锁)
- concurrency control (并发控制)
- isolation (隔离级别)
- serializability (序列化)
锁是用来实现并发控制, 并发控制用来实现隔离级别, 隔离级别是通过锁来控制的, 锁的目的为了使得事物之间的执行是序列化。
注:在分析锁的实现时,请确保已了解上述概念。
二、实验演示分析
创建一张表,插入数据:
CREATE TABLE `l` (
`a` int(11) NOT NULL,
`b` int(11) DEFAULT NULL,
`c` int(11) DEFAULT NULL,
`d` int(11) DEFAULT NULL,
PRIMARY KEY (`a`),
UNIQUE KEY `b` (`b`),
KEY `c` (`c`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `l` VALUES (5,5,5,5),(10,10,10,10),(15,15,15,15),(20,20,20,20),(25,25,25,25),(30,30,30,30);