不再以技术的角度思考问题

最近遇到一个问题,deadLock(死锁),由于mysql的事务导致的死锁,本事这个bug不是问题,关键是解决问题的过程比较有意思。

1、收到问题之后,我这先看了,mysql 的日志,然后各种分析重现问题,结果浪费两天时间,只是知道问题原因在那。给出的解决方案如下:1)、找到死锁的代码,调整执行顺序。2)把整个大的事务拆成小的事务,应为那块代码太繁杂了。总之,问题没有得到很好的解决。

2、咨询A同事:你这个业务场景不应该用这样的代码,应该用redis incr 。

3、咨询B同事:详细的聊了一下mysql死锁的原因,因为业务逻辑复杂,最终没有结论。

4、咨询C同事:详细的说了业务流程,(省略100字)。把我们频繁的数据库操作,在java代码层实现,最后更新数据库,避免频繁更新数据库造成死锁。

最开始,我不感觉这是一个好的方案,只是尽可能回避了死锁,没有最终解决死锁。后来仔细想象,发现这个是目前最靠谱的办法:

1)改动最小。

2)虽然没有最终解决死锁,但是回避了死锁。数据量不大的话,那么问题是解决了。

最后,我问自己一个问题,当出现问题,第一时间应该怎么处理。

 

 

 

 

转载于:https://my.oschina.net/internetafei/blog/1829172

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值