您的位置:首页 > 其它

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

2018-06-12 21:35 274 查看
最近遇到一个问题,deadLock(死锁),由于mysql的事务导致的死锁,本事这个bug不是问题,关键是解决问题的过程比较有意思。

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

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

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

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

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

1)改动最小。

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

最后,我问自己一个问题,当出现问题,第一时间应该怎么处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: