最近生产系统监控在购物车一经常出现mysql死锁异常,心中立马一万匹草泥马,就看了看代码分析了下。
生产问题:
原因:交叉等待
关闭mysql自动提交,模拟事物:
解决方案:高并发下批量update操作,尽量避免采用非业务主键的条件
参考:https://dev.mysql.com/doc/refman/5.7/en/innodb-deadlock-example.html
推荐一篇文章帮助理解:https://www.cnblogs.com/zejin2008/p/5262751.html
多说几句:看了网上很多文章,又查阅些资料,有的文章写的是不对的,mysql InnoDB支持行锁,与oracle不同,mysql行锁是基于索引加载的,如果sql没有走索引,则会全表扫描,也就是说行锁是无法实现的。锁不能共存(非共享锁)
领取专属 10元无门槛券
私享最新 技术干货