Mysql中的三种锁:
行级锁 表级锁 页面锁
首先来看Mysql中四大存储引擎的锁机制
MYISAM和Memory只采用了一种锁那就是表级锁
BDB存储引擎支持表级锁和页级锁,默认是页级锁。
InnoDB存储引擎支持表级锁和行级锁,默认是行级锁。
速记:四大引擎都支持表级锁,有两个只有一种锁,剩下的都有两种锁且组合不相同,且默认的都不是表级锁,记住InnoDB默认是行级锁,自然而然剩下的BDB就能快速背出是行级锁。
下面详细来说这三大锁机制。
行级锁:
行级锁是 MySQL 中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁。行级锁分为共享锁和排他锁。
特点:加锁开销大,会出现死锁,锁定粒度最小,发生锁冲突的概率最低,并发度最高。
页级锁:
页级锁是 MySQL 中锁定粒度介于行级锁和表级锁中间的一种锁。采取了折衷的页级锁,一次锁定相邻的一组记录。BDB 支持页级锁。
特点:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。
表级锁:
表级锁是 MySQL 中锁定粒度最大的一种锁,表示对当前操作的整张表加锁,它实现简单,资源消耗较少,被大部分 MySQL 引擎支持。表级锁定分为表共享读锁(共享锁)与表独占写锁(排他锁)。
开销小,加锁快;不会出现死锁;锁定粒度大,发出锁冲突的概率最高,并发度最低。
相关问题,来源网络: