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锁详细分析(一)

上一篇:Win7 IE故障:APPCRASH,d3d9.dll,c0000005


下一篇:MySQL管理 - 三大范式