V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  wengyanbin  ›  全部回复第 1 页 / 共 4 页
回复总数  79
1  2  3  4  
58 天前
回复了 imyasON 创建的主题 数据库 SQL 问题修改
@imyasON 再给点 mock 的数据。没数据玩不转
59 天前
回复了 imyasON 创建的主题 数据库 SQL 问题修改
还是给下表结构还有部分数据吧,纯看着没什么问题。
朋友,贵司在哪?你需要小弟吗? curd 会一点,nacos 我也会配,git 基本操作我也行。
@justFxxk2060 不敢不敢,只是看到题主这样的朋友,觉得自己做不到这样,不敢奢求有这样的朋友而已。除了父母,不敢奢求有其他人能这样不求回报。
@justFxxk2060 也就是还有条件是吧,必须对面先对你好,你才能这么对他。嗯,其他人对待朋友的方式我觉得还挺坦荡,阁下算计的颇多。
@justFxxk2060 对的,你是希望跟他做朋友,而不是成为像他这样的朋友。
自己的人脉,难道你爸妈就不是你爸妈了吗?就算不把爸妈当作爸妈,那跳出来想想,他们的人脉对于你来说不也就是多一层跳转吗,后面怎么把间接人脉变成直接人脉那就是你的工作了
重新看过问题,我有一个想法。题主你原来没问题的写法,两个事务同时开启,在第一句 SQL 的时候发生了锁竞争,有一个事务阻塞没有产生快照,直到另一个事务完成才获得锁并产生快照。这时候的快照已经是最新的,所以最后按照你的设计执行成功。在 for update 加上的那一句查询,使得两个事务都同时获得各自的快照,后面的操作其实都是在快照上面执行的。
成长不一定是在工作上的,可以是在其他的事业上。
@rqxiao 没注意到行锁是同一个对象,能获取到行锁确实证明上个已经提交。我说的幻读的那种场景是例如会议室预定,两个人同时预定同个时间段的会议室,通过 select count()来判断是否有预定,在 rr 级别下,会出现两个事务并发进行,都先判断无人预定,然后就会产生写冲突。
@rqxiao 在这里事务一更新了 detail 然后去 count ,这个时候 count(0)=1 ,所以事务一没有更新表 a ;事务二跟事务一是并发的,count(0)也是等于 1 ,也没有更新表 a 。原因就是因为 count(0)这个地方是 ReadView ,两个事务读出来 count(0)都不等于 0.
@rqxiao 问题应该还是在 count 的地方,产生了一个快照读。但我个人分析还是觉得无论前面那一句查询加不加都会是快照读,也就是无论怎样都会有幻读的问题才对。不加 select * from a_detail where id =这一句事务反而能够正常跑是我不能理解。现在不知道从哪里分析问题了
@rqxiao 难道是在事务开始时候的 select * from a_detail where id =这一句影响了后面的 count ?就算去掉开始的语句我也觉得会有幻读的问题的,两个事务里面的 count 应该都是快照读才对。
当你是单身,住的地方没网没空调,你的主要活动也都还是上网打机,刚好这个时候公司周末要加班,公司配的电脑,显卡虽然一般但是其他配置很高,而且申报的是企业宽带,要是我我也去加班(摸鱼)。
235 天前
回复了 z139533325 创建的主题 职场话题 我有一个新创业项目设想!
大概印象是第三个,创作者中心,但还是需要用户授权。
1  2  3  4  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2824 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 31ms · UTC 14:06 · PVG 22:06 · LAX 06:06 · JFK 09:06
Developed with CodeLauncher
♥ Do have faith in what you're doing.