mysql如何产生死锁的
发表于:2024-09-30 作者:千家信息网编辑
千家信息网最后更新 2024年09月30日,这篇文章将为大家详细讲解有关mysql如何产生死锁的,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql中死锁:是指两个或两个以上的进程在执行过程中,因争夺资源
千家信息网最后更新 2024年09月30日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安全错误
数据库的锁怎样保障安全
济南app软件开发公司
服务器机房搭建接地
不履行网络安全保护义务案件
嘉定区电话软件开发供应商哪个好
国外服务器价格对比
中兴软件开发岗位分配
腾讯云服务器怎么撤销退款
数据库是面向
南京海航软件开发系统
计算机网络技术大一学啥
国土安全服务器
智能化软件开发诚信服务
软件开发学不会怎么办
石油数据库
服务器后台授权管理
仙境传说 数据库
服务器的超融合集成项目
app软件开发 价格
什么是爬虫服务器
一般处理程序访问数据库
软件开发前端和后端怎么合并
不履行网络安全责任主体
汕尾数据链软件开发平均价格
开放获取依托网络技术
软件开发投标标书几个人做
傻瓜式软件开发app
久游互联网科技有限公司
没有打印服务器属性
影响java服务器性能的指标
服务器上的管理口