SQL Server2000中執行一個SQL, 在lock上發現自己鎖自己

tolywang發表於2010-12-15
很老的一個資料庫, SQL SERVER 2000 SP4,   執行一個查詢SQL的時候(查詢SQL中有加入nolock), PID=128,   在lock session 上檢視
發現 128 的session 是blocked ,  同樣還有另外一個也是 128 的session 狀態為 blocking ,  是否是多執行緒導致的自己鎖自己的情況 ?
執行時間達到 20多秒 。 但是在SQL後面加入 option (maxdop 1)  速度就變得非常快, 具體是什麼原因 ?  


SELECT  
'004' AS MSGFN,
'OB20031120' AS AENNR,
b.climat AS IDNRK,
'L' AS POSTP,
CONVERT(INT,b.SOITMNUM) AS POSNR,
b.ordqty AS MENGE_C ,
'X' AS SANFE
FROM purchaseordersitem a (nolock),purchaseordersitemdetail b (nolock)
WHERE  a.mesgid='0a5dc698-6cc4-49bd-ab0b-e33121f6ec44'
AND  a.ordnum='20058439390'
and a.itmnum='1'
AND  a.mesgid= b.mesgid
AND  a.ordnum=b.ordnum
and a.itmnum=b.itmnum
and a.highlevel IS NOT NULL
AND  not exists (select * from purchaseorderscomponent(nolock)
     where climat=b.climat
     and rdnum='20058439390'
     and mesgid='0a5dc698-6cc4-49bd-ab0b-e33121f6ec44'
                                        and itmnum='1'
     and ((ATTRIBNAME='InSystemBox'and ATTRIBVALUE='N')
                                               or (ATTRIBNAME='PartType'and ATTRIBVALUE='OVERPACK')
                                             )
                 )
ORDER BY POSNR

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-681902/,如需轉載,請註明出處,否則將追究法律責任。

相關文章