怎么解决mysql 事务出现死锁的问题
例如事务一和2同时分别执行"updateuseseta=1whereuid=1","updateuseseta=2whereuid=1";然后就会出现死锁卡死问题,请问解...
例如事务一和2同时分别执行 "update use set a=1 where uid=1","update use set a=2 where uid=1";
然后就会出现死锁卡死问题,请问解决办法是什么。执行修改前需要什么操作。最好给下说明谢谢! 展开
然后就会出现死锁卡死问题,请问解决办法是什么。执行修改前需要什么操作。最好给下说明谢谢! 展开
展开全部
这个问题,问的就有问题,你对同一条记录,同时想将use设置成1或2,业务逻辑就有问题啊。我原来处理过类似的问题,介绍一下我的处理方式,在use表中,增加一个字段b,默认值是0,在事物一开始的时候,先将你要处理的那条记录的b值,设置成1,再事物全都处理完毕后,在将1更新成0。如果事物一开始发现这条记录的b值是1,则直接提示用户,正在对同一条数据进行处理,请稍后在试,代码里直接就return了,不往下进行。
说白了,就是用一个字段,把一条记录锁住,事物一开始先判断锁没锁,如果锁了就提示用户,如果没锁,就锁住,然后向下进行,但是,无论是正常处理完,还是回滚,或者是抛出异常,都不要忘了把锁解开。
说白了,就是用一个字段,把一条记录锁住,事物一开始先判断锁没锁,如果锁了就提示用户,如果没锁,就锁住,然后向下进行,但是,无论是正常处理完,还是回滚,或者是抛出异常,都不要忘了把锁解开。
更多追问追答
追问
判断具体怎么判断
追答
晕,怎么判断???select b from use where uid=1查出来的结果判断是0还是1
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |