排它锁与共享锁

来源:5-7 删改数据如何避免锁表?

慕尼黑8734558

2019-10-10

加了共享锁的记录,其它事务可以再对这些记录加共享锁,但是这些事务只能查询这些记录,而不能做修改;
加了排它锁的记录,其它事务不可以再对这些记录加排它锁,但是这些事务也只能查询这些记录,而不能做修改;
请问:
那感觉加共享锁或排它锁效果是一样的呀,这里有些迷惑。

写回答

1回答

神思者

2019-10-10

参考一下这个帖子,https://www.jianshu.com/p/bd3b3ccedda9

1
2
慕尼黑8734558
一个事务对数据不管是加了X锁还是S锁,其它事务都不能对数据进行修改。 我自己测试了一下,有点明白了,总结一下: 1.不管是S锁还是X锁,我们都不能主动加在增删改操作语句上, 所以S锁和X锁是针对查询语句的(查询语句默认没有加锁),如果加了锁,就能保证了一个事务在查询数据时,这些数据不会被其它事务所修改。 2. 如果事务T的查询语句对数据加了S锁,其它事务的查询语句加了S锁能查出数据,但加了X锁就要等到事务T释放S锁了; 如果事务T对数据加了X锁,其它事务的查询语句如果加了锁(x或s锁)就要等待事务T释放了X锁。
2019-10-10
共2条回复

阿里新零售数据库设计与实战 (升级版)

解锁“新零售”业务让数据库实战能力再上一层楼

2101 学习 · 701 问题

查看课程