MySQL优化班13期13课-锁-课堂实验疑问

## 表结构
mysql> show create table t1\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `c1` int(10) unsigned NOT NULL DEFAULT '0',
  `c2` int(10) unsigned NOT NULL DEFAULT '0',
  `c3` int(10) unsigned NOT NULL DEFAULT '0',
  `c4` int(10) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`c1`),
  KEY `c2` (`c2`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

## 数据
mysql> select * from t1;
+----+----+----+----+
| c1 | c2 | c3 | c4 |
+----+----+----+----+
|  0 |  0 |  0 |  0 |
|  1 |  1 |  1 |  0 |
|  3 |  3 |  3 |  0 |
|  4 |  2 |  2 |  0 |
|  6 |  2 |  5 |  0 |
|  8 |  6 |  6 |  0 |
| 10 | 10 |  4 |  0 |
+----+----+----+----+
7 rows in set (0.00 sec)

## 实例1:
SQL及错误日志输出(启用innodb lock monitor)
mysql>  begin;select * from t1 where c2 = 2 for update;

实例1.png


## 实例2:
# 执行事务(s1代表会话1,s2代表会话2)
s1> begin;update t1 set c1 = 40 where c1 = 4;
s2> begin;select * from t1 where c2 = 2 for update; //阻塞
# 实例2-查看事务

实例2-查看事务.png

# 实例2-innodb_lock_waits

实例2-innodb_lock_waits.png

 
# 启用innodb lock monitor & 查看错误日志输出

实例2-innodb_lock_monitor.png


# 疑惑:
请查看附图:"实例2-innodb lock monitor"
已邀请:

要回复问题请先登录注册