事务(进程 ID )与另一个进程已被死锁在 lock 资源上,且该事务已被选作死锁牺牲品。请重新运行该事务

其实所有的死锁最深层的原因就是一个:资源竞争 表现一:
一个用户A 访问表A(锁住了表A),然后又访问表B
另一个用户B 访问表B(锁住了表B),然后企图访问表A

这时用户A由于用户B已经锁住表B,它必须等待用户B释放表B,才能继续,好了他老人家就只好老老实实在这等了
同样用户B要等用户A释放表A才能继续这就死锁了
解决方法:
这种死锁是由于你的程序的BUG产生的,除了调整你的程序的逻辑别无他法
仔细分析你程序的逻辑,
1:尽量避免同时锁定两个资源
2: 必须同时锁定两个资源时,要保证在任何时刻都应该按照相同的顺序来锁定资源.

表现二:
用户A读一条纪录,然后修改该条纪录
这是用户B修改该条纪录
这里用户A的事务里锁的性质由共享锁企图上升到独占锁(for update),而用户B里的独占锁由于A有共享锁存在所以必须等A释
放掉共享锁,而A由于B的独占锁而无法上升的独占锁也就不可能释放共享锁,于是出现了死锁。
这种死锁比较隐蔽,但其实在稍大点的项目中经常发生。
解决方法:
让用户A的事务(即先读后写类型的操作),在select 时就是用Update lock
语法如下:
select * from table1 with(updlock) where ....

转载于:https://www.cnblogs.com/lvxiangjack/archive/2013/04/12/3016003.html

另一个进程已被死锁在资源上且该事务已被选作死锁牺牲品相关推荐

  1. 读写分离,读写分离死锁解决方案,事务发布死锁解决方案,发布订阅死锁解决方案|事务(进程 ID *)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务...

    前言:         由于网站访问压力的问题,综合分析各种因素后结合实际情况,采用数据库读写分离模式来解决当前问题.实际方案中采用"事务发布"模式实现主数据库和只读数据库的同步, ...

  2. SQL Server死锁问题:事务(进程 ID x)与另一个进程被死锁在 锁 | 通信缓冲区资源上并且已被选作死锁牺牲品。请重新运行该事务。...

    ### The error occurred while setting parameters ### SQL: update ERP_SCjh_zzc_pl set IF_TONGBU=1 wher ...

  3. EF 多线程TransactionScope事务异常事务(进程 ID 58)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务。

    在使用EF的TransactionScope事务时,如果多线程程序,经常会抛出如下异常 {"事务(进程 ID 58)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品.请重新运行该事务 ...

  4. 解决:与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品

    今天程序运行时出现的一个错误,连接数据库Sql Server2012 进行更新操作时出现: java.sql.SQLException: 事务(进程 ID 126)与另一个进程被死锁在 锁 资源上,并 ...

  5. 与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。问题解决

    前几天有客户反馈,查询的时候会偶发死锁问题,数据库是sqlserver,报错如下: java.sql.SQLException: 事务(进程 ID 126)与另一个进程被死锁在 锁 资源上,并且已被选 ...

  6. 事务(进程 ID XXX)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品

    多线程高并发量执行方法的过程中控制台出现:事务(进程 ID XXX)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品. 可以尝试对方法加锁来解决问题. //定义lock锁 private fi ...

  7. 事务_进程 ID 57_与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务

    事务_进程 ID 57_与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品.请重新运行该事务 问题描述 执行下面这个SQL查询语句时,经常会报这个错!事务_进程 ID 57_与另一个进程被死锁在 ...

  8. 事务(进程 ID 133)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品的解决方案

    事务(进程 ID 133)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品的解决方案 参考文章: (1)事务(进程 ID 133)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品的解决 ...

  9. 查询数据的时候 提示事务(进程 ID **)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。

    转自:https://blog.csdn.net/vip__888/article/details/6087850 =======================以下为原文内容============ ...

最新文章

  1. Spark 1.2 发布,开源集群计算系统
  2. python3发送邮件_Python3使用SMTP发送带附件邮件
  3. python实例化次数怎么算_关于python多次实例化
  4. 初识Git-GitHub
  5. AGV机器人RFID传感器CK-G06A与西门子1200PLC应用手册
  6. 3mx转osgb_如何将无人机Las点云数据转为Osgb数据
  7. sony的故事 第 18 章
  8. uni-app 微信/头条小程序/手机号登陆
  9. Acwing1183. 电力
  10. 基于SmartThreadPool线程池技术实现多任务批量处理
  11. 楼市步入慢行道 购房窗口期显现?
  12. CGO arm 树莓pi下的交叉编译
  13. 公司挖来一个阿里Java大神,生产环境故障调优很溜
  14. CSR BC57E687B蓝牙模块方案 现货供应
  15. 网盘天天被群嘲,为什么还是有人用,原因竟然是这个!
  16. 【HDU 3903】三角函数的一些性质
  17. shell 100例
  18. 深入场景痛点,制造业数据应用思考与实践
  19. Java签到活动设计完整版
  20. 崇礼六大雪场与春秋航空达成战略合作 共建旅游目的地生态 打造高品质文旅产品

热门文章

  1. 做外贸出口,要想快速开发客户,快速赚大钱
  2. 生意是怎么越做越累的?
  3. 普通人,怎么改变命运?
  4. 30岁以后的人生,如何来逆袭?
  5. 手机上的星号键和井号键有什么用?
  6. Solidity API
  7. C++ 一个简单的基类
  8. Mybatis_day4_Mybatis的注解开发
  9. mac 打不开 不受信任_管理不受信任的外键
  10. abp vnext_SQL Server vNext – Microsoft是否喜欢Linux?