1.存储引擎
mysql的MyISAM没有事务,只有表锁 mysql的InnoDB有事务,不仅有表锁,也有行锁
2.行锁
行锁的劣势:开销大;加锁慢;会出现死锁
行锁的优势:锁的粒度小,发生锁冲突的概率低;处理并发的能力强
加锁的方式:自动加锁。对于UPDATE、DELETE和INSERT语句,InnoDB会自动给涉及数据集加排他锁;对于普通SELECT语句,InnoDB不会加任何锁;
查询条件中的字段有索引,mysql才会加行锁,InnoDB的行锁是针对索引加的锁,不是针对记录加的锁。并且该索引不能失效,否则都会从行锁升级为表锁。
当对表中大部分或者所有行操作时,行锁就会变为表锁,因为一行一行加锁效率低,表锁效率更高
