mysql死锁和分库分表问题详解
而在生产运行过程中,半年出现过两次mysql导致的mq消费者堆积的问题。问题分析记录两次不同的原因导致的生产问题及原因分析。具体什么原因导致mq一直堆积,需要继续排查。查出后发现最长的慢sql的耗时长达7780ms。而这慢sql中有大量的Lock Wait状态。而这条sql是回执时执行的。初步怀疑是redis问题,然后就与redis维护的平台沟通,发现果真是因为redis故障导致的问题。在批量操作时减少每批dml数,保证快速提交,避免长事务,避免重复提交dml。这种方案可以通过把将要执行的sql统一发到一个mq来消费执行,这样可以保证sql顺序执行,从而避免死锁的产生。mysql死锁问题,要尽可能避免频繁操作同一条数据,也要避免长事务;总结
用户评论