mysql如何产生死锁的
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章将为大家详细讲解有关mysql如何产生死锁的,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql中死锁:是指两个或两个以上的进程在执行过程中,因争夺资源
千家信息网最后更新 2025年01月21日mysql如何产生死锁的
这篇文章将为大家详细讲解有关mysql如何产生死锁的,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
mysql中死锁
死锁的关键在于:两个(或以上)的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安全错误
数据库的锁怎样保障安全
用优客科技软件开发外贸客户
苏州新品服务器供应商
存储服务器排行榜
软件开发文档国标
软件开发搓成
华为计算机网络技术薪资
金山区推广网络技术模板规格
武汉一网网络技术有限公司
虚拟主机数据库外部访问
网络安全社团纳新标语
中职网络技术模拟考试题
安卓怎么改时间服务器
怀旧服精灵宝可梦新服务器
正确的网络安全工作
国外专业数据库估值
英雄联盟各大区服务器分别在哪
多功能软件开发怎么用
数据库如何查不重复数据库
apex各个服务器互通吗
王牌竞速一直卡在获取服务器
厦门科技互联网软件产品
网络安全龙头股安信
杭州国产化服务器怎么选择
四海欢腾服务器
石林县民族古籍数据库平台
文献检索OA数据库
移动软件开发在哪就业
企业软件开发代理
hpe服务器
bim数据库背景