2020-07-08:mysql只有一个表a,什么情况下会造成死锁,解决办法是什么?

发布网友 发布时间:2022-04-16 05:59

我来回答

4个回答

懂视网 时间:2022-04-16 10:20

mysql死锁产生的原因是因为两个进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生死锁,这些永远在互相等待的进程称为死锁进程。
  
  MYSQL是一个关系型数据库管理系统,由瑞典MYSQL AB公司开发,属于Oracle旗下产品。MYSQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MYSQL是最好的RDBMS应用软件之一。MYSQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加速度并提高灵活性。
  
  MYSQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MYSQL 软件采用双授权,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。

热心网友 时间:2022-04-16 07:28

你好,很高兴回答你的问题。
两个事务t1和t2,假如t1先对表a的记录a1加了锁,而t2对表a的记录a2加了锁。
然后t1又需要对a2加锁,t2又需要对a1加锁。
这时候就会因为持有对方需要的锁,而又等待对方释放自己需要的锁,导致死锁。
比如两个账户记录转账,两个事务,一个事务是从a转账给b,一个事务是从b转账给a。如果如果都是先给转出账户(或转入账户)加锁,然后给转入账户(或转出账户)加锁。就可能出现死锁。
这个可以通过加锁时都是先给主键值小的记录加锁,然后给主键值大的记录加锁,就会避免出现死锁了。
如果有帮助到你,请点击采纳。
我解答的大部分是软件开发新人遇到的问题,如果有兴趣可以关注我。

热心网友 时间:2022-04-16 08:46


不好意思,可能是文字太多,刚才一直提交失败。所以只能截图发给你。请参考。

热心网友 时间:2022-04-16 10:21

一般没提交的同时 又更改的话会死锁吧

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com