MyISAM和InnoDB锁理解

MySQL的存储引擎是从MyISAM到InnoDB,锁从表锁到行锁。后者的出现从某种程度上是弥补前者的不足。比如:

MyISAM不支持事务,InnoDB支持事务。

表锁虽然开销小,锁表快,但高并发下性能低。行锁虽然开销大,锁表慢,但高并发下相比之下性能更高。

事务和行锁都是在确保数据准确的基础上提高并发的处理能力。

mysql的表锁有两种模式:表共享读锁(table read lock)和表独占写锁(table write lock)
MyISAM和InnoDB锁理解_第1张图片

说明

1.myISAM表的读操作,不会阻塞其他用户对同一个表的读请求,但会阻塞对同一个表的写请求。
2.myISAM表的写操作,会阻塞其他用户对同一个表的读和写操作。
3.myISAM表的读、写操作之间、以及写操作之间是串行的。
4.myISAM表始终是写锁优先的,如果现在一个用户正在读,其他用户等待读,此时进来一个写操作,那么这个写操作会被排在第一个正在读的用户后面,即第2个执行(被读阻塞)

你可能感兴趣的:(mysql)