V2EX ezwd
 ezwd 最近的时间轴更新
ezwd

ezwd

V2EX 第 158639 号会员,加入于 2016-02-13 11:05:08 +08:00
根据 ezwd 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
ezwd 最近回复了
松鼠快看
2023-11-28 11:16:21 +08:00
回复了 jonsmith 创建的主题 MySQL 库存扣减时,出现 MySQL 死锁是什么原因?
MySQL 的 InnoDB 存储引擎用行级锁来实现多版本并发控制( MVCC ),同时也支持 "SELECT ... FOR UPDATE" 这种显式锁定。在解决超售问题的场景中,死锁的出现可能是由于并发事务试图在同一时间内锁定同一行数据导致的。

对于你的第一种 SQL 语句:

```
UPDATE inventory SET stock = stock - Y WHERE product_id = X AND stock >= Y;
```
这个语句在更新前会先检查 stock >= Y 条件,如果不满足这个条件,该行不会被锁定也不会被更新。当你有多个并发事务试图更新同一个 product_id ,并且 stock 库存不足时,这些事务可能会互相等待其他事务释放锁,这就可能导致死锁。

对于你的第二种 SQL 语句:

```
SELECT stock FROM inventory WHERE product_id = X FOR UPDATE;
UPDATE inventory SET stock = stock - Y WHERE product_id = X;
```
在这个情况下,你先显式地获取了一个行级锁,这会阻止其他事务在此期间修改这一行。然后,你再执行更新操作。由于你已经持有了行级锁,所以其他试图更新这一行的事务会被阻塞,直到你的事务完成,这样就避免了死锁。

总的来说,第一种 SQL 语句在高并发的情况下可能会导致死锁,因为它试图在同一时间内更新同一行。而第二种 SQL 语句通过显式获取行级锁来避免这个问题。这就是为什么第二种 SQL 语句在你的测试中没有出现死锁。
2023-05-26 13:50:28 +08:00
回复了 lk960511 创建的主题 程序员 超过了 35 岁的程序员该何去何从?
搞点副业,做知识付费
2023-05-17 11:17:01 +08:00
回复了 mrfox 创建的主题 问与答 有啥经济的无风扇主机实现方案推荐吗
散热效果好、便宜、静音,三选二
2022-11-29 11:01:09 +08:00
回复了 orluna 创建的主题 宽带症候群 家用服务器选择
弄了一个 12400 的 deskmini b660 ,32G 内存,挂机跑 QQ 机器人
用习惯了,人脑会自动切换,一摸键盘就知道应该用什么键位按快捷键
同 5800H ,用两个瓶盖把后面的脚垫垫起来,散热效果好很多
看这个界面像是 kibana ,是不是 elk 日志收集的时间间隔 1ms ,实际产生日志的时间间隔不止 1ms ?
2020-12-14 16:41:30 +08:00
回复了 fat4fox 创建的主题 晒晒更健康 晒晒大家主力电脑的配置吧!
AMD Ryzen 7 5800x
ASUS TUF GAMING B550M-PLUS
Galaxy RTX 3070 GAMER OC
G.SKILL DDR4 3600 16Gx2
Samsung 970evo plus 512G
主要用来看 b 站、逛贴吧和斗鱼云游戏
2020-07-06 16:50:30 +08:00
回复了 ccming 创建的主题 上海 迫于被淋湿,求推荐一款又大又轻又坚固的雨伞
blunt classic,用了 4 年了,满足又大又坚固(可以抗台风),就是比较重
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     918 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 11ms UTC 21:14 PVG 05:14 LAX 14:14 JFK 17:14
Do have faith in what you're doing.
ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86