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)

MySQL锁详细讲解

MySQL锁机制

一个最不可思议的MySQL死锁分析

JUC锁框架_AbstractQueuedSynchronizer详细分析

Mysql学习 —— 锁机制