【MySQL】 知识点记录

0. 定位和排查问题的常用语句

查询 正在执行的事务(这个输出有事物状态表明是否等待锁):
SELECT * FROM information_schema.INNODB_TRX

查看正在锁的事务:
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; 

查看等待锁的事务:
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
 
这个语句显示当前所有的连接以及连接信息:
show processlist
查看最近一个sql查询产生的警告:
show warnings;
查看死锁日志:
show engine innodb status \G; 
 

1. Gap 锁是单纯的防止其他事物在间隙中插入(修改),他们不妨碍其他事物在相同的间隙中加间隙锁(间隙X锁和S锁是一样的效果)。

举一个例子:

  假设A事物在(3,6)上持有间隙锁,B事物使用update索引 4 的记录,但是索引4记录不存在,锁住了同样的(3,6)间隙锁,这是可以成功的。

  继续,如果B事物update更新索引1记录的值为索引4,此时,索引记录1存在,锁住的是(1,3)间隙,但是起更改后的结果是影响到了A事物的加了锁的间隙(3,6),这是不能插入或更新。

 

posted @ 2018-01-29 10:51  彭玉松  阅读(164)  评论(0编辑  收藏  举报