产生死锁的原因 系统中有入库和销售两个业务,同时操作库存表中的两个商品(商品A、商品B),顺序分别是AB和BA,由于mysql用的是行锁,并发量大的情况下则会产生死锁。 如何避免死锁? 以相同的顺序修改数据库中的记录,每个业务都按相同的规则进行排序,就可以避免死锁,同时操作库时,只会锁等待,一个业务操作完后,再执行下一个业务。如上面AB和BA的例子,排序后操作顺序都变成了AB。对于非实时的业务可以考虑使用消息队列mq,把同一用户的操作放到mq的相同队列中,顺序执行就可以避免死锁。