关于锁堵塞~~
产生堵塞的语句如下:
Select Count ( *) from HT Where SAuditingID = 'ljz ' and
AuditingDate is Null and SubMitDate is not null
——由于程序源代码无法更改,目前我想解决的是做一个程序,自动去
1、查找到所有“正在堵塞”的进程
2、分析SQL是否是该语句
3、删除该进程
请各位可以说说为何造成堵塞——不要直接把邹老大的存储过程给我,谢谢~~
[解决办法]
相关字段有没有索引
表的数据量大概多少
加索引(SAuditingID,AuditingDate,SubMitDate)先试试
kill进程的想法往往是不可取的
[解决办法]
是每次都这样?
那就SQL有问题.
如果是偶尔这样,那可能是库或程序使用的记录的查看方法.如某人正在更改记录,锁住表,你查询就会很慢了.
[解决办法]
Select Count ( *) from HT Where SAuditingID = 'ljz ' and
AuditingDate is Null and SubMitDate is not null
把这句话放到查询分析器里面运行一下,看看情况.
[解决办法]
Select Count ( *) from HT with (nolock) Where SAuditingID = 'ljz ' and
isnull(AuditingDate, ' ')= ' ' and isnull(SubMitDate, ' ') <> ' '
這樣看看,
[解决办法]
1、打开Sql Profile
2、运行程序
3、用sp_lock 找到看看有哪些进程处于wait状态,找到他的spid
4、然后找Sql Profile中看看相应的spid线程执行了哪些语句,最后一个Sql语句应该就是引起阻塞的语句。
-----------------
不知以上方法是否可行,lz可以试试看。
[解决办法]
至于删除进程,应该比较容易,kill就可以了。