首页 新闻 会员 周边 捐助

网络很多对共享锁的错误理解,为什么?

-1
悬赏园豆:5 [已解决问题] 解决于 2022-03-08 11:19
如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。

上面的话有毛病,来自:https://www.cnblogs.com/nickup/p/9804020.html

一个事务对某行数据加共享锁,其它事务可以读取但是不能修改,这没有毛病。但是一个事务已经加了共享锁,其它事务怎么能继续往上面加锁呢?上面说可以加共享锁,不能加排他锁,这样的表述不对吧。

我们说对数据加锁,那就是锁上了,怎么允许其它事务继续再加一把锁上去呢?

共享锁,其实就是一个事务对数据加了锁,但是钥匙有多把,其它使用可以获取这把锁的钥匙进去看,但是不能改动罢了,这不叫加锁吧。

liaowenxiong的主页 liaowenxiong | 初学一级 | 园豆:33
提问于:2021-10-14 20:56
< >
分享
最佳答案
0

MySQL锁机制:
表级锁:
隐式读/写表级锁
显式读/写表级锁
行级锁(InnoDB):只有通过索引条件检索的数据,InnoDB才会使用行级锁
隐式行级锁
显式行级锁:
SELECT 语句 FOR UPDATE(行级排他锁) | LOCK IN SHARE MODE(行级共享锁)
表的意向锁(共享、排他)!!在 加行级锁 前,和 表级锁(共享、排他两种)对比是否 兼容!!

from 书《MySQL数据库原理、设计与应用》by 黑马程序员

收获园豆:5
快乐的欧阳天美1114 | 老鸟四级 |园豆:4004 | 2021-10-14 21:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册