生产中使用到的锁问题

预算占用问题。每个预算科目都有对应的预算。预算科目是树级,申请单能多选预算科目末,但只能选择预算科目末级,为了避免多线程导致的两个申请单同时提交 总预算100  。然后每个单子都是申请100、导致申请通过问题。使用了mysql行级锁。当提交的时候通过分割ids来查询预算科目 使用for update 将数据锁定。这个时候会出现一个问题,当两个申请单都同时选择了两个预算科目a.b.当申请单提交的一个申请单锁占用是从b->a,一个是从a->b。就是会产生死锁问题。我解决这个问题的方法是,查询的时候先给预算科目排序,来保证加锁的顺序一致。

posted @ 2021-06-18 09:20  爱摇头的封三  阅读(30)  评论(0编辑  收藏  举报