共享锁是表级的,排他锁是行级的

发布网友 发布时间:2022-04-27 04:19

我来回答

4个回答

热心网友 时间:2022-04-09 13:14

“共享锁是表级的,排他锁是行级的”
==>
后半句肯定是错误的 排它锁 也可能是表级的....

共享锁 是允许别的事务读取你用共享锁锁住的表或者记录
排他锁 是不允许别的事务读取或者修改你用排他锁锁住的表或者记录
....
A 事务 执行 select * from tb; 没有commit 这个时候tb上加了共享锁
B 事务 可以执行 select 但是不能执行 update tb这样的操作

A事务 执行 update tb ,没有commit 这个时候tb上加了排它锁
B事务 依据他加的是表级或者行级 不允许B事务查看tb表上的数据或者部分行数据

热心网友 时间:2022-04-09 14:32

select语句在表或者行或者页上加共享锁,DML(update/delete/insert)则加上排他锁,排它锁可以是行级的,也可以是表级的。
当表上加上共享锁时,还可以叠加共享锁,但不能加排他锁。
当表上加上排他锁时,再叠加其他类型的锁了
问题补充回答:
A. select语句不应该置于事务中,只有DML语句才会在事务中,如果将select和DML
语句交替着写,会导致DML锁表时间延长,这不是一个好的习惯。另外select语句不用commit,
它执行结束后共享锁就释放掉了。
B.这个问题我在前面已经说了,当表上加上共享锁时,还可以叠加共享锁,但不能加排他锁

热心网友 时间:2022-04-09 16:07

2,如果只是 读操作是不会加锁的

3,事务2 什么操作都不行

4,事务2 可以加共享锁,不能加排他锁

问题补充回答

读操作就是select ,任何时刻都可以,因为是非阻塞读,由UNDO机制实现

共享锁是保证表结构不能被更改,但是可以更改没有加排他锁的数据
共享锁是表级的,排他锁是行级的

热心网友 时间:2022-04-09 17:58

1、表行锁
2、共享锁(S锁)
如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。
获准共享锁的事务职能读取数据,不能修改数据。
排他锁(X锁):
如果事务T对数据A加上排他锁后,则其他事务不能在对A加任何类型的封锁。
获准排他锁的事务既能读取数据,也能修改数据。
数据库死锁的原因:若干事务相互等待对方释放封锁,就陷入了无限期等待状态,系统进入死锁。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com