千家信息网

mysql如何产生死锁的

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章将为大家详细讲解有关mysql如何产生死锁的,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql中死锁:是指两个或两个以上的进程在执行过程中,因争夺资源
千家信息网最后更新 2026年11月01日mysql如何产生死锁的

这篇文章将为大家详细讲解有关mysql如何产生死锁的,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

mysql中死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。表级锁不会产生死锁.所以解决死锁主要还是针对于最常用的InnoDB。

死锁的关键在于:两个(或以上)的Session加锁的顺序不一致。

那么对应的解决死锁问题的关键就是:让不同的session加锁有次序

案例

需求:将投资的钱拆成几份随机分配给借款人。

起初业务程序思路是这样的:

投资人投资后,将金额随机分为几份,然后随机从借款人表里面选几个,然后通过一条条select for update 去更新借款人表里面的余额等。

例如两个用户同时投资,A用户金额随机分为2份,分给借款人1,2

B用户金额随机分为2份,分给借款人2,1

由于加锁的顺序不一样,死锁当然很快就出现了。

对于这个问题的改进很简单,直接把所有分配到的借款人直接一次锁住就行了。

Select * from xxx where id in (xx,xx,xx) for update

在in里面的列表值mysql是会自动从小到大排序,加锁也是一条条从小到大加的锁

 例如(以下会话id为主键): Session1: mysql> select * from t3 where id in (8,9) for update;+----+--------+------+---------------------+| id | course | name | ctime               |+----+--------+------+---------------------+|  8 | WA     | f    | 2016-03-02 11:36:30 ||  9 | JX     | f    | 2016-03-01 11:36:30 |+----+--------+------+---------------------+rows in set (0.04 sec)  Session2:select * from t3 where id in (10,8,5) for update;锁等待中…… 其实这个时候id=10这条记录没有被锁住的,但id=5的记录已经被锁住了,锁的等待在id=8的这里不信请看 Session3:mysql> select * from t3 where id=5 for update;锁等待中  Session4:mysql> select * from t3 where id=10 for update;+----+--------+------+---------------------+| id | course | name | ctime               |+----+--------+------+---------------------+| 10 | JB     | g    | 2016-03-10 11:45:05 |+----+--------+------+---------------------+row in set (0.00 sec)  在其它session中id=5是加不了锁的,但是id=10是可以加上锁的。

关于mysql如何产生死锁的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

死锁 借款人 两个 投资 用户 进程 金额 从小到大 从小 关键 更多 条条 篇文章 系统 问题 顺序 分配 不同 不错 实用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州百单互联网科技有限公司 猪兼强互联网科技 润盈互联网科技 镁科技互联网资讯平台 青岛中康互联网医疗科技有限公司 互联网之后的科技是什么 创业天下互联网科技有限公司 互联网科技有哪些公司 深圳育鹏互联网科技有限公司招聘 四川慕妮娅互联网科技有限公司 中科明德北京互联网科技 合肥互联网科技公司公章图片 互联网金融科技元年 21世纪互联网科技成就 新氧科技和美国互联网有关系吗 珠海东科互联网科技有限公司 互联网科技博主张洲 恒生科技指数 中概互联网 平安好医生打造互联网科技医疗 知域互联网科技有限公司官网 保险科技 互联网保险 湖南永感互联网科技有限公司 哈尔滨新华互联网科技学院 互联网对科技的发展 辽宁互联网新科技 米聚互联网科技南京有限公司排面 全球科技与互联网公司市值变化 互联网科技职业技能培训学校 现代互联网科技公司 承德科技产业互联网平台
0