加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2014-11-22 23:49:35)
标签:

杂谈

分类: IT技术和研发管理

访问一个内部调研页面,打开第二次就死锁了,搜索了一下,一种可能的情况类似下面这种场景,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)与另一个进程被死锁在 锁 | 通信缓冲区 资源上,并且已被选作死锁牺牲品。请重新运行该事务。
源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

堆栈跟踪:

[SqlException (0x80131904): 事务(进程 ID 70)与另一个进程被死锁在 锁 | 通信缓冲区 资源上,并且已被选作死锁牺牲品。请重新运行该事务。] System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +212
 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +245
 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2811
 System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) +2479231 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) +470
 System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +182
 Microsoft.Practices.EnterpriseLibrary.Data.Database.DoExecuteNonQuery(DbCommand command) +251
 Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteNonQuery(DbCommand command) +63
 DBUtility.DbbHelper.SetSqlStrNonQuery(DbTransaction tran, String query, DbParameter[] param) in D:\WQB\project\培训会议系统\web1\web\DBUtility\DbbHelper.cs:227
 DBUtility.DbbHelper.SetSqlStrNonQuery(String query, DbParameter[] param) in D:\WQB\project\培训会议系统\web1\web\DBUtility\DbbHelper.cs:218
 CardProject.admin.Survey.KS_Parper.dx() +3436
 CardProject.admin.Survey.KS_Parper.Save() +52
 CardProject.admin.Survey.KS_Parper.Page_Load(Object sender, EventArgs e) +4102
 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25
 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +42
 System.Web.UI.Control.OnLoad(EventArgs e) +132
 System.Web.UI.Control.LoadRecursive() +66 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2428

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有