mysql锁机制概述
定义
锁的分类
从数据操作的类型(读、写)分:
1、读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响。
2、写锁(排它锁):当前写操作没有完成前,它会阻断其他写锁和读锁。
从对数据操作的颗粒度分:
从对数据操作的颗粒度分为:表锁和行锁。
三锁分析
表锁(偏读)
特点:偏向MyISAM存储引擎,开销小,加锁快,无死锁,锁定粒度大,发生锁冲突的概率最高,并发最低。
表锁分析:
行锁(偏写)
特点:偏向InnoDB存储引擎,开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
补充:InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION);二是采用了行级锁。
由于行锁支持事务,复习老知识如下:
事务(Transation)及其ACID属性:
并发事务处理带来的问题:
更新丢失:
脏读:
不可重复读:
幻读:
事务隔离级别:
常见问题如何锁定一行:
行锁分析:
优化建议: