关于锁的粒度问题——面试

锁的粒度划分主要有三种:表级锁、页级锁和行锁

1.表级锁:

对整张表加锁,粒度最大,加锁的并发度最低,会导致其他事务无法访问该表,只有当前事务提交或者回滚后才能释放锁。表级锁适用于对表进行全表操作的场景,如表的重建、初始化等。

mysql5.5之前默认使用MYISAM引擎

2.页级锁:

对数据表中的一页加锁,粒度介于表级锁和行锁之间,可以提高并发度,但是会导致锁冲突的概率增加。页级锁适用于对表中大部分数据进行操作的场景。

3.行锁:

对数据表中的一行加锁,粒度最小,加锁的并发度最高,可以最大程度地支持并发操作。行锁适用于对表中少量数据进行操作的场景。

mysql5.5之前默认使用InnoDB引擎

4.注意:

需要注意的是,锁的粒度越小,并发度越高,但是锁的开销也越大,因此需要根据具体场景选择合适的锁粒度

相关推荐
德彪稳坐倒骑驴7 分钟前
SQL之前不懂,后来又学会的东西
数据库·sql
Maiko Star10 分钟前
基于Redis ZSet实现多维度题目贡献度排行榜
数据库·redis·缓存
老华带你飞11 分钟前
垃圾分类|基于springboot 垃圾分类系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·spring
CodeAmaz20 分钟前
InnoDB的MVCC机制
java·数据库·mvcc
MC皮蛋侠客28 分钟前
MySQL数据库迁移脚本及使用说明
数据库·mysql
星光不问赶路人1 小时前
new Array() 与 Array.from() 的差异与陷阱
javascript·面试
T___T1 小时前
Vue 3 做 todos , ref 能看懂,computed 终于也懂了
前端·javascript·面试
愚公移码1 小时前
蓝凌EKP产品:Hibernate 中 SessionFactory、Session 与事务的关系
java·数据库·hibernate·蓝凌
踏浪无痕1 小时前
自定义 ClassLoader 动态加载:不重启就能加载新代码?
后端·面试·架构
透明的玻璃杯1 小时前
sqlite数据库连接池
jvm·数据库·sqlite