MySQL锁详细分析
Posted DBA修炼之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL锁详细分析相关的知识,希望对你有一定的参考价值。
一、基本概念
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);
1.RR隔离级别
以上是关于MySQL锁详细分析的主要内容,如果未能解决你的问题,请参考以下文章
超级详细,讲解分布式锁各种实现(附代码)(redis,zookeeper,mysql)