一,表锁(偏读)
1,特点
偏向MyISAM存储引擎,开销小,加锁快,无死锁,锁定粒度大,发生锁冲突的概率最高,并发最低
2,表锁案例
1,表锁语法
表加锁:lock table 表名 read(write), 表名2 read(write), 其它;
释放表锁:unlock tables;
查看加过的锁:show open tables;
2,加读锁
为mylock 表加 read 锁(读阻塞写例子)
3,案例结论
4,表锁分析
show open tables;

MyISAM的读写锁调度是写优先,这也是MyISAM不适合做写为主表的引擎,因为写锁后,其他线程不能做任何操作,大量的更新会使查询很难得到锁,从而造成永远阻塞。
二,行锁(偏写)
1,特点
偏向InnoDB存储引擎,开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION);二是采用了行级锁
2,行锁支持事务
1,事务及其ACID属性
2,并发事务处理带来的问题
1,更新丢失(Lost Update)
2,脏对(Dirty Reads)
3,不可重复读(Non-Repeatable Reads)
4,幻读(Phantom Reads)
3,事务隔离级别
查看当数据库的事务隔离级别:show variables like 'tx_isolation'
3,行锁案例
1,建表SQL
2,行锁定基本演示
3,无索引行锁升级为表锁
varchar 不用 ‘’导致系统自动转换类型,行锁变表锁
4,间隙锁危害

5,面试题:常考如何锁定一行 begin ...... commit
4,案例结论
5,行锁分析
show status like 'innodb_row_lock%'




