1.mysql锁分为表锁、行锁、页锁,innodb引擎支持表锁与行锁;
2.锁分为共享锁与排它锁,共享锁允许多个session同时持有共享锁,同时当一条记录共享锁被某个session持有时,其他session不能获取到该记录的排他锁;当一个session持有排他锁时,其他的session无法同时持有排它锁与共享锁;
3.innodb引擎的行锁是通过索引项实现的,也就是说只有使用索引记录才能为表上行锁,否则是表级锁,并发性差;注意innodb引擎支持间隙锁,例如有索引1,5,9若索引列不是唯一索引,则会在给5记录上锁的时候,同时2,3,4,6,7,8也会上锁,会导致2上插入数据时所等待,因此尽量使用唯一索引可以避免锁间隙;
4.事务隔离级别分为事务未提交读,事务已提交读,不可重复读(侧重修改),与幻读(侧重新增与删除),mysql解决幻读是通过间隙锁与表虚拟快照MVCC实现的或者锁住整个表。