目录
遇见已是上上签 岂敢追求到永远

锁的粒度
MyISAM使用表级锁,InnoDB采用更细粒度的行级锁。InnoDB行级锁通过索引来实现,如果查询条件中有主键则锁定主键,如果有索引则先锁定对应索引然后再锁定对应的主键(可能造成死锁),如果没有索引则会锁定整个表。锁和MVCC (多版本的并发控制,Multi-Version Concurrency Control)解决了数据库事务不同隔离级别的隔离性,不同事物间能够互不干扰。从粒度上可分为表锁、页锁、行锁。表锁有意向共享锁、意向排他锁、自增锁等。行锁是在引擎层由各个引擎自己实现的。但并不是所有的引擎都支持行锁,比如MyISAM引擎就不支持行锁。根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类。
表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也。
全局锁
全局锁就是对整个数据库实例加锁。MyS
本文详细介绍了MySQL锁的粒度,包括全局锁、表级锁、页级锁和行级锁,并探讨了悲观锁与乐观锁的实现及优缺点。文章还讨论了死锁、锁的工作原理以及MySQL锁的优化策略,旨在帮助读者深入理解MySQL的并发控制机制。
订阅专栏 解锁全文
121

被折叠的 条评论
为什么被折叠?



