死锁,上图,高手进
2.公司使用的系统是CRM系统,
2.目前用户并发数大概在30-60人以内,每天都是死锁几次,如图:

左边的图是被丢掉的事务,SQL语句是个查询,是对客户数据的一个分页查看:
Select top 100 PID,LastContactTextNew,Remark,CreateDate,CustCode,CustName From vCu_Customer Left Join Sy_Share on (vCu_Customer.PID=SharePID and ShareTableName='Cu_Customer' and shareuserid=246) where vCu_Customer.PID not in(Select top 0 vCu_Customer.PID From vCu_Customer Left Join Sy_Share on (vCu_Customer.PID=SharePID and ShareTableName='Cu_Customer' and shareuserid=246) where ((1=1) and (CustPublicType is null or CustPublicType=0) and (isSaleOK=0 or isSaleOK is null) ) And (owner = 246 or Share=1 or shareuserid=246)) and ((1=1) and (CustPublicType is null or CustPublicType=0) and (isSaleOK=0 or isSaleOK is null) ) And (owner = 246 or Share=1 or shareuserid=246) AND (CustPublicType=0 OR CustPublicType IS Null)
说明:这个SQL有点复杂,是对客户表的一个查询,带权限的,这条语句在查询分析器里是1秒就查出数据的;
右边的图是对联系人的一个修改:
update cu_contact set ContName='李福财
',Dept=0,Job='',FamilyTel='',WorkTel='',MobileTel='13609005309
',Birthday=null,Email='',QQ='',Msn='',Sex=0,PhoneSort=1 where PID=380137
这些死锁大多都是在修改联系人时,出现的,因为vCu_Customer(客户表)关联了联系人表,所以在查询时,会访问联系人表,
请大家帮小弟分析一下,这个是会是什么原因造成死锁的
相关推荐
什么是死锁,如何避免死锁?Java死锁详解
什么是死锁 死锁是指多个进程因竞争资源而引起的一种僵局,如果没有外力作用,所有进程都不会向前推进。 举例:假如有线程Thread1和Thread2,两个都要访问共享资源AB,Thread1和Thread2一个先访问A再访问B,另一个先访问B再访问A。但在他们线程未执行完时,都不会释放AB资源,那么就形成了一种僵局,Thread1在等待Thead2施放B资源,Thread2在等待Thread1释放A资源,两个进程就形成了一种僵局,下面以Java代码实现为例说明: public class DeadThread { private Thread thread1; public D
数据库死锁-解决死锁问题的三种办法
解决死锁问题的三种方法:预防死锁,检测死锁及避免死锁。
postgresql查询死锁以及杀死死锁进程sql.txt
查询sql的死锁进程,查找并杀死。解决生产数据库中卡死的现象。postgresql查询死锁以及杀死死锁进程sql
Mysql查看死锁与解除死锁的深入讲解
前言 前段时间遇到了一个Mysql 死锁相关的问题,整理一下。 问题描述:Mysql 的修改语句似乎都没有生效,同时使用Mysql GUI 工具编辑字段的值时会弹出异常。 什么是死锁 在解决Mysql 死锁的问题之前,还是先来了解一下什么是死锁。 死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等的进程称为死锁进程。 死锁的表现 死锁的具体表现有两种: Mysql 增改语句无法正常生效 使用Mysql GUI 工具编辑字段的值时,会出现异常。 如何避免死锁 阻止死锁的途径
SQLSERVER死锁总结
SQLSERVER死锁总结,里面详述基于SQLSERVER数据库如何排查并处理死锁的办法,及死锁产生的原因


疑难问题

