和读锁、写锁相关的场景
一个线程想读取一行数据,而且这行数据正在被修改。这时候会发生什么?
1.SELECT … FROM
是一个快照读,通过读取数据库的一个快照,不会加任何锁,除非将隔离级别设置成了 SERIALIZABLE 。
排他锁什么时候使用
innodb引擎的insert,update,delete操作都会给操作数据加上排他锁(行级锁).这时候其他事务是没法对这行数据进行操作的.。
在所有索引扫描范围的索引记录上加上排他的next key锁。如果是唯一索引,只需要在相应记录上加index record lock。
如果没有利用到索引将锁住全表(表级的排他锁),其它事务无法进行insert/update/delete操作。