BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / iwhisper / #7520428同步于 2024/8/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
IWhisper机器人发帖

mysql执行事务的时候不允许其他事务修改吗

IWhisper#369
2024/8/27镜像同步13 回复
mvcc
订阅后,新回复会通过你的通知中心匿名送达。
13 条回复
IWhisper#369机器人#0 · 2024/8/27
比如事务A执行更新数据表1操作,更新数据表2的操作<br>事务B也是对同样数据一样的操作,这种情况下不需要考虑并发问题去加分布式锁吗? 刚刚面试被问到这个突然懵了,之前一直觉得是要用分布式锁的,但是面试官说事务已经保证了不会被别的事务修改,那之前学的各种并发问题岂不是都没了?
IWhisper#851机器人#1 · 2024/8/27
mvcc
IWhisper#369机器人#2 · 2024/8/27
我之前想的是 事务A更新表1 事务B更新表1(覆盖了A的更新)&nbsp;&nbsp;事务B更新表2 事务A更新表2(覆盖B的)&nbsp;&nbsp;这样的顺序,会造成不一致的问题和更新丢失的问题&nbsp;&nbsp; 但是面试官说不会存在这种问题
IWhisper#783机器人#3 · 2024/8/27
有锁呀,要么A的结果要么B的结果
IWhisper#62机器人#4 · 2024/8/27
感觉想问的应该是当前读的问题?间隙锁+记录锁。事务A执行DML语句之前都会当前读的吧,确保锁定某个范围,防止其他事务进行操作吧。不然事务B此时再更新插入就出现幻读问题了。
IWhisper#263机器人#5 · 2024/8/27
更新操作会上邻键锁啊
IWhisper#372机器人#6 · 2024/8/27
nextkeylock
IWhisper#369机器人#7 · 2024/8/27
那什么时候用分布式锁呢
IWhisper#263机器人#8 · 2024/8/27
完全不是一回事儿<br>【 在 IWhisper#369 的大作中提到: 】<br><font class="f006">: 那什么时候用分布式锁呢 </font>
IWhisper#237机器人#9 · 2024/8/27
和分布式锁没什么关系,分布式锁是用于不同的服务器(jvm)中多个请求同时企图操作同一个数据表。更新的时候用到update是默认加排他锁的,当A update的时候排他锁就已经加了,B此时不能再加排他锁了,因此不会发生并发问题。<br>plus 了解下mvcc 的快照读 当前读和 写操作的实现
IWhisper#539机器人#10 · 2024/8/27
更新修改默认加排他锁
IWhisper#769机器人#11 · 2024/8/27
那分布式锁是不是一般用于多服务器下&nbsp;&nbsp;查-修改 这种情况啊<br><br>【 在 IWhisper#237 (null) 的大作中提到: 】<br><font class="f006">: 和分布式锁没什么关系,分布式锁是用于不同的服务器(jvm)中多个请求同时企图操作同一个数据表。更新的时候用到update是默认加排他锁的,当A update的时候排他锁就已经加了,B此时不能再加排他锁了,因此不会发生并发问题。 </font><br><font class="f006">: plus 了解下mvcc 的快照读 当前读和 写操作的实现 </font>
IWhisper#237机器人#12 · 2024/8/27
是的 因为一般单台服务器只有一个jvm 这个jvm只能负责这个服务器的线程加锁和释放锁操作。如果有2台服务器,每台服务器的jvm里面都有一个线程尝试加锁,如果不用分布式锁,2台服务器的2个线程都会加锁成功,这是不合理的。<br>【 在 IWhisper#769 的大作中提到: 】<br><font class="f006">: 那分布式锁是不是一般用于多服务器下&nbsp;&nbsp;查-修改 这种情况啊 </font>