mysql进程通信_事务(进程 ID 70)与另一个进程被死锁在 锁 | 通信缓冲区 资源上,并且...

在MySQL中遇到死锁问题,事务(进程ID 70)被锁定在通信缓冲区资源上。文章介绍了SQL Server中nolock提示的用法,并提供了MySQL的解决方案,包括设置事务隔离级别为READ UNCOMMITTED来避免死锁。
摘要由CSDN通过智能技术生成

访问一个内部调研页面,打开第二次就死锁了,搜索了一下,一种可能的情况类似下面这种场景,SQLServer中似乎嵌套的SQL语句会造成死锁,用nolock

hint可以解决这个问题。

update  t_sms_send set msg_flag =

-1  where id in (select top 100 id from

t_sms_send  where

msg_flag=-2)

此句应该改为update  t_sms_send set msg_flag =

-1  where id in (select top 100 id from t_sms_send

with (nolock) where msg_flag=-2)

但是MySQL中并不支持nolock,MySQL的对应写法是:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;

SELECT * FROM Tablename ;

COMMIT ;

或者配置为mysqld默认

[mysqld] transaction-isolation = READ-UNCOMMITTED

事务(进程 ID 70)与另一个进程被死锁在 锁 | 通信缓冲区

资源上,并且已被选作死锁牺牲品。请重新运行该事务。

说明: 执行当前 Web

请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.SqlClient.SqlException: 事务(进程 ID

70)与另一个进程被死锁在 锁 |

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值