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

问题描述

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

  string sql = $@"select distinctb.F_Barcode  as 条码号,b.F_PatientID  as 门诊号,b.F_Name as 病人姓名,(case b.F_Sex when '1' then '男'  when '2' then '女' else '未知' end) as 性别,b.F_Age as 年龄,d2.Name as 样本类型,b.F_BedNo as 床号,b.F_CreateDate as 开单时间,b.F_Transport as 送检医生,d.F_Name as 开单科室,b.F_Clinical as 临床诊断,'' as 项目英文名,stuff((select distinct ',' + a.F_Name from T_LIS_App_Item a left join T_LIS_Report_Bill r2 on r2.F_ID = a.F_ReportID left join T_LIS_Base_OrgJob j2 on j2.F_ID = r2.F_WKSIDleft join T_LIS_App_Bill b2 on b2.F_SAMID = r2.F_SAMIDwhere r.F_Exp2 = r2.F_Exp2 and j2.F_Name like '%迪安%' and r2.F_CheckDT >='{timeStart}' and r2.F_CheckDT <'{timeEnd}'  for xml path('')),1,1,'') as 项目中文名,b.F_SAMID as 样本号,ISNULL(r.F_CheckDT,GETDATE()) as 送检日期,ISNULL(r.F_CheckDT,GETDATE()) as 采样日期,'' as 标本个数,'' as 标本要点,r.F_Exp2 as 迪安条码,'' as 病人电话,b.F_DoctorTel as 医生电话,d1.Name as 病人类型,'' as 病人身份证,b.F_Org as 医院名称from T_LIS_App_Bill bleft join T_LIS_Base_OrgDept d on d.F_ID = b.F_Deptleft join T_LIS_Report_Bill r on r.F_SAMID = b.F_SAMIDleft join TB_DictData d1 on d1.DictType_ID = 'DTHZLX' and d1.Value = b.F_PatientSortleft join TB_DictData d2 on d2.DictType_ID = 'DTSampleSort' and d2.Value = b.F_SAMType          left join T_LIS_Base_OrgJob j on j.F_ID = r.F_WKSIDwherer.F_CheckDT >='{timeStart}' and r.F_CheckDT <'{timeEnd}' and r.F_Exp2 is not nulland j.F_Name like '%迪安%'{and}order by r.F_Exp2 asc";

原因分析:

虽然这个错误提示是由于竞争资源引起的,但根本原因在我看来还是由于SQL语句中带有stuff函数,导致消耗了太多时间导致更容易引起竞争资源。
所以优化的根本还是在于要优化SQL语句本身,减少消耗时间。


解决方案:

删除Stuff函数,改用代码的方式运算。
Stuff函数固然可以节省很多代码,但同时,消耗的时间也是及其恐怖,消耗时间多可能是由于业务表数据量大引起的,但也从侧面说明了这个函数也是比较耗时的。
在实际使用过程中,还是尽量避免使用这类函数,改用代码处理,速度可以算是天壤之别。

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

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

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

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

    感觉这篇文章写的不错,读了三遍不是太明白,记录下来: https://www.cnblogs.com/happyhippy/archive/2008/11/14/1333922.html 解决办法: ...

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

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

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

    今天给某客户的sql server 数据库增加了一个字段,然后出现了这个错误: 1.问题分析: 看报错信息上来看,应该是死锁问题. 又看了下程序,里面确实有两个连续的update操作,猜测是否是当两个 ...

  5. C#种死锁:事务(进程 ID 112)与另一个进程被死锁在 锁

    C#种死锁:事务(进程 ID 112)与另一个进程被死锁在 锁 参考文章: (1)C#种死锁:事务(进程 ID 112)与另一个进程被死锁在 锁 (2) 通信缓冲区 资源上,并且已被选作死锁牺牲品.请 ...

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

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

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

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

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

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

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

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

最新文章

  1. 不懂这几个问题就落后了:Python、Android开发者必读!
  2. 为什么做了梦第二天想不起来_为什么做的梦总是想不起来?科学的解释是……...
  3. 迷你世界维护服务器几点到几点,迷你世界服务器房间是什么 | 手游网游页游攻略大全...
  4. 使用OpenCV与百度OCR C++ SDK实现文字识别
  5. LCD 进入休眠的操作解决方式
  6. modis数据介绍_【更新90篇】地理数据科学技术文章合集,欢迎大家点赞、在看、转发三连!...
  7. 2020ICPC(上海) - Walker(分类讨论+二分)
  8. 复习--linux目录及文件操作
  9. 我的Linux折腾史
  10. MSPlus DatePicker WebControl FreeVersion 1.1.0906 发布啦!
  11. Caused by: java.lang.ClassNotFoundException: javax.persistence.NamedStoredProcedureQuery
  12. 记录-如何测试服务器是否支持ipv6
  13. c语言冒泡排序算法解析
  14. catia 桥接曲面圆角_CATIA建模教程_二_圆角及桥接在空间曲线中的应用
  15. html盒子模型 正方形嵌套,div盒子模型实例
  16. Ccharles 爬取微信公众号和小程序
  17. 人民币对美元汇率中间价报6.7560元 上调349个基点
  18. jpress连接数据库mysql_win10+java+mysql+tomcat+jpress环境搭建与部署
  19. CMD 调用子程序从子程序返回
  20. 新浪微博用户密码泄露 经部分用户验证为真

热门文章

  1. Linux 显示文件内容命令
  2. android休闲游戏,Android应用推荐:休闲游戏超级坍塌
  3. 大聪明教你学Java | 一文解决安全头部 X-Content-Type-Options 导致 jsonp 无法加载的问题
  4. [CocosCreator]扑克翻牌效果
  5. 坚果手机c语言编程软件,PAT-B1018-锤子剪刀布(C语言实现)
  6. arm64和aarch64之间的区别
  7. 解决 应用程序无法正常启动0xc0150002
  8. js中表达式 >>> 0 是什么意思
  9. NOI Online 2022
  10. 【实体对齐·BootEA】Bootstrapping Entity Alignment with Knowledge Graph Embedding