日期:2014-05-18  浏览次数:20536 次

愁愁愁!!!select怎么会造成无关表阻塞?
有这样三个进程造成阻塞:
51       SELECT     sys_dd_new.att_number   ,sys_dd_new.no_gwj   ,       sys_dd_new.chk_sig   ,sys_dd_new.chk_state   ,sys_dd_new.chk_jcx   ,                           sys_dd_new.chk_jc   ,sys_dd_new.var_parm   ,sys_dd_new.chk_wj   ,          
52       SELECT     fjtz_xs.sys_grade   ,   fjtz_xs.chr_dydm   ,   fjtz_xs.var_dynr   ,fjtz_xs.var_dynr2   ,fjtz_xs.var_dynr3   ,fjtz_xs.fjbz     FROM   fjtz_xs             WHERE   (   fjtz_xs.sys_grade   =   80728   )      
57       update   car_sign   SET   chk_state   = '4 '   WHERE   car_sign.Sys_Grade   =80841

其中52阻塞57,57阻塞51.
1.select   怎么会造成阻塞呢?
2.它怎么会造成其它表的阻塞呢?
望各位大哥赐教!小弟万分感谢!!

------解决方案--------------------
如果没有相关的update触发器,是不可能的

------解决方案--------------------
fjtz_xs.sys_grade和car_sign.Sys_Grade是什么关系,是不是主键和外键的关系?

------解决方案--------------------
那你在两个表中对fjtz_xs.sys_grade和car_sign.Sys_Grade设置主外键关系了吗
------解决方案--------------------
那么car_sign上有针对update的触发器吗
------解决方案--------------------
是不是这个触发器试图去修改fjtz_xs表,而fjtz_xs正在被51进程查询,所以阻塞了
------解决方案--------------------
fjtz_xs.sys_grade和car_sign.Sys_Grade是什么关系
------解决方案--------------------
那你用sp_lock看看与这三个进程相关的锁定信息吧,然后把它贴出来