表锁(偏读)
加读锁
给一个表加读锁,在两个终端的操作及状态如下:
加写锁
给一个表加写锁,在两个终端的操作及状态如下:
总结
简单地说,读锁会阻塞写,但不会阻塞读;而写锁会把读和写都阻塞
表锁分析
行锁(偏写)
行锁支持事务
事务隔离机制:
mysql 默认是RR级别的
给一个表加行锁,在两个终端的操作及状态如下:
索引失效行锁升级为表锁
比如varchar类型没有写单双引号
间隙锁
总结就是,在范围内,就算你没有这个值,mysql也给你锁上
例子:
先对session1操作
再对session2操作,此时session2阻塞:
然后session1提交:
之后session2才能恢复过来:
间隙锁危害:
如何锁定一行
行锁分析
最后一步使用 show profile 来分析系统的等待