1.MyISAM默认使用的是表级锁,不支持行级锁

2.InnoDB默认用的是行级锁,也支持表级锁

MyISAM不支持事物

InnoDB支持事物

 

表级锁就是在一个session访问的时候,MyISAM会将整个表给锁起来(读锁),如果有新session对这个表进行增删改时(写锁),会被阻塞

比如在一个session中手动加锁:

在另一个session中写:

就会失败

释放锁:

读锁也叫共享锁(即上了读锁,还能再上读锁)

写锁也叫排它锁(即上了写锁,就不能再上写锁了)

 

也可以对select语句添加排它锁

 

行级锁

InnoDB对select语句进行了改进

InnoDB在sql没有用到索引的时候使用的是表级锁,sql用到索引的时候是用的行级锁和gap锁

MyISAM适合的场景

InnoDB适合的场景