mysql 对死锁的处理

死锁是指两个或多个事务因资源争用形成的恶性循环,事务等待对方释放资源导致的僵局。MySQL的InnoDB存储引擎能检测并解决死锁,通常通过回滚持有最少行级锁的事务。为防止死锁,应用设计应考虑事务重试策略。
摘要由CSDN通过智能技术生成

死锁是指两个或者多个事务在同一资源上相互占用,并请求锁定对方占用的资源,从而
导致恶性循环的现象。当多个事务试图以不同的顺序锁定资源时,就可能会产生死锁。
多个事务同时锁定同一个资源时,也会产生死锁。

例如,设想下面两个事务同时处理
StockPrice表:
事务1
START TRANSACTION;
UPDATE StockPrice SET close = 45.50 WHERE stock_ _id = 4 and date = ' 2002-05-01';
UPDATE StockPrice SET close = 19.80 WHERE stock _id = 3 and date = ' 2002 -05-02';
COMMIT;

事务2
START T.RANSACTION;
UPDATE StockPrice SET high = 20.12 WHERE stock_ id = 3 and date =' 2002-05-02';
UPDATE StockPrice SET high = 47.20 WHERE stock_ id = 4 and date =' 2002-05-01' ;
COMMIT;

如果凑巧,两个事务都执行了第一条UPDATE语句,更新了一行数据,同时也锁定了该行
数据,接着每个事务都尝试去执行第二条UPDATE语句,却发现该行已经被对方锁定,然
后两个事务都等待对方释放锁,同时又

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值