一文让你搞懂什么是表级锁什么是行级锁,什么情况下使用行级锁

select * from student for update 是表级锁还是行级锁,为什么

在大多数数据库系统中,select * from student for update 是获取行级锁的操作,而不是表级锁。这条语句会锁定查询结果集中的行,以确保在事务结束前其他事务无法修改这些行。

当使用for update语句时,数据库系统会为查询结果集中的每一行设置行级锁,这样其他事务在尝试修改这些行时会被阻塞,直到当前事务释放锁为止。这种行级锁的机制可以保护数据的一致性,避免并发事务之间的冲突。

相比之下,表级锁会锁定整个表,阻止其他事务对整个表的修改。表级锁通常会对数据库的并发性能产生负面影响,因为其他事务在等待锁释放时无法对表中的其他行进行修改。

因此,select * from student for update语句通常会获取行级锁,以确保查询结果集中的行在事务中被保护。

哪何时使用表级锁呢?

表级锁通常在以下情况下使用:

1. **大范围操作:** 当需要执行影响整个表的大范围操作时,例如对整个表进行全表扫描、重建索引、备份等操作,可以考虑使用表级锁来确保操作的完整性和一致性。

2. **DDL操作:** 在执行数据定义语言(DDL)操作时,通常需要对整个表进行锁定。例如,执行`ALTER TABLE`、`DROP TABLE`等操作时,需要确保其他事务不能同时对表进行修改。

3. **低并发环境:** 在低并发的环境下,使用表级锁可能更简单和高效。如果

  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值