mysql 锁超时有什么好的方案吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
themostlazyman
V2EX    程序员

mysql 锁超时有什么好的方案吗?

  themostlazyman 2023-05-15 15:05:19 +08:00 1822 次点击
这是一个创建于 885 天前的主题,其中的信息可能已经有所发展或是发生改变。

mysql5.7 插入、更新数据时报错:Lock wait timeout exceeded; try restarting transaction 。定时同步插入、更新到其它数据库时会上行锁。历史遗留问题主键 ID 为 uuid 。目前看超时时间是默认 50s ,临时改为 100s 了。 想不明白都是上的行锁,为啥插入不进去,不知什么原因变成表锁了。目前考虑增加硬件配置会不会好些,还是要将数据库连接池的最大数量调低。

第 1 条附言    2023-05-16 08:44:14 +08:00
抱歉,没看仔细,ID 不是主键是唯一索引,还有订单流水号的唯一索引。
第 2 条附言    2023-05-24 10:20:30 +08:00
经过几天超时频发,通过查看日志发现有共享锁锁的不是唯一索引,会有间隙锁,经分析该锁的实际意义不大,已经删除。
后间隔一天后,线上又频发超时,通过 SHOW FULL PROCESSLIST 发现某个 update 语句执行时间太长,导致很多 update 和 insert 等待,kill 该语句后恢复。经查阅资料和自己实践发现该 update 语句中的条件有子查询,导致锁住更新表,后该 update 语句改为 inner join 更新。
9 条回复    2023-05-16 09:11:25 +08:00
fmumu
    1
fmumu  
   2023-05-15 15:36:03 +08:00
多线程插入吗? 改单线程排队去插入
Pythoner666666
    2
Pythoner666666  
   2023-05-15 15:54:31 +08:00
看下是不是事务太大了,如果是的话拆一下
7911364440
    3
7911364440  
   2023-05-15 15:56:02 +08:00
更新数据走索引吗,不走的话就是表锁
encro
    4
encro  
   2023-05-15 15:59:59 +08:00
需要看具体的场景,

1 ,show full processlist 查看可能锁表的进程;

2 ,是否异常导致事务未提交或者回滚;

3 ,是否修改时需要索引重新排序;
siweipancc
    5
siweipancc  
   2023-05-15 23:57:00 +08:00 via iPhone
大事务就换成 redis 锁,不然就乐观锁,永远不要锁行,用不好就升级成表锁
themostlazyman
    6
themostlazyman  
OP
   2023-05-16 08:37:46 +08:00
@7911364440 走主键或者唯一索引。
themostlazyman
    7
themostlazyman  
OP
   2023-05-16 08:40:30 +08:00
@encro 确实有修改时索引重排。有两个字段。这样会导致表锁吗?
encro
    8
encro  
   2023-05-16 09:10:30 +08:00   1
show full processlist 看下是谁在执行,谁在 wait ,状态是什么,那个卡住了,不一定是你说的语句卡住了,可能是一个 count 或者 order by 让数据库卡住了都不一定。
encro
    9
encro  
   2023-05-16 09:11:25 +08:00
而且可能往往是事务没有正常释放容易导致卡住,这种情况要远超其他情况。
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2754 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 23ms UTC 14:33 PVG 22:33 LAX 07:33 JFK 10:33
Do have faith in what you're doing.
ubao msn 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