区别
MyISAM默认为表级锁,不支持行级锁
InooDB默认为行级锁,同时支持表级锁
锁的分类
MyISAM的锁
- 读锁(又叫共享锁)当有一个对表进行查询的操作在执行的时候,将会对表上一个表锁,其他对表的修改操作将不能执行,但是其他对表的读取操作能够执行。所有又叫共享锁
- 写锁(又叫排他锁)当有一个对表进行写入的操作时,会对表上一个写锁,其他对表的查询、修改操作都不能够被执行,所以又叫做排他锁。
- 还可以手动上锁与解锁
InooDB的锁
使用二段锁(先对同一个事物中的操作加锁,在commit的时候再解锁)
默认使用行级锁,但是在关闭事务的情况下,在查询一行数据的同时,还是能对其进行修改。是因为InnoDB对锁进行了优化。为验证InnoDB能够进行行级锁,可以对查询的行加共享锁,之后,对另外一行进行修改,发现能够修改成功。
需要注意的是InooDB在使用索引查询的时候使用的是行级锁,非索引的时候会使用表级锁。