|
sqldba20
Posting Yak Master
183 Posts |
Posted - 2007-05-11 : 13:59:09
|
| Folks: I need help with a Deadlock issue I am facing. I tried a lot and cannot fix this. Any help on this is highly appreciated. Version SQL 2000 SP4. The table name where the Deadlock is occuring is 'tblholdings'. Below are the 2 Stored Procedures, Deadlock information from Error Log and the indexes on the table information.*****************************************************************STORED PROCEDURE # 1*****************************************************************CREATE PROCEDURE [dbo].[spQOpsRptDateAdjFactor](@AsOf DATETIME)ASDECLARE @localAsOf DATETIMESET @localAsOf = @AsOf-- Table to hold resultsDECLARE @tblResults TABLE(Security VARCHAR(50),SecID int,Factor FLOAT,FactorDate DATETIME)-- Get holdingsINSERT INTO @tblResultsSELECT DISTINCT HL.Security, HL.SecurityID,-- Analysis.dbo.fnGenUseGetSDSVal(@localAsOf, HL.SecurityID, 14) AS CUSIP, HL.Factor, HL.FactorDateFROM pmWhse..tblHoldings HLWHERE HL.AsOf >= dateadd(day, -60, @localAsOf) AND HL.Factor > 0 AND left(HL.Security, 1) <> '|'select Analysis.dbo.fnGenUseGetSDSVal(@localAsOf, SecID, 14) as CUSIPfrom @tblResultswhere Analysis.dbo.fnGenUseGetSDSVal(@localAsOf, SecID, 527) in ('ABS ADJ ACT/360', '*CMO FLOAT ACT', 'ABS Act/360P12U', 'CMO Act/360P12U')order by CUSIP*****************************************************************STORED PROCEDURE # 2*****************************************************************CREATE PROCEDURE spUpdateKRD (@asofdate DATETIME)ASDECLARE @localasofdate DATETIMESET @localasofdate = @asofdateDECLARE @propertydate TABLE (SecID INT, PropertyID INT, AsOfDate DATETIME, PropertyValue FLOATPRIMARY KEY CLUSTERED (SecID, PropertyID))INSERT @propertydateSELECTH.SecurityID,PM.PropertyID,MAX(SDF.AsOfDate),NULLFROM pmWhse..tblHoldings HCROSS JOIN Analysis..tblPropertyMaster PMLEFT OUTER JOIN Analysis..tblSecDataFlt SDF ON SDF.SecID = H.SecurityID AND SDF.PropertyID = PM.PropertyID AND SDF.AsOfDate <= @localasofdateWHEREPM.PropertyID IN(509,--Key6MoMove510,--Key1YrMove511,--Key2YrMove512,--Key3YrMove513,--Key5YrMove514,--Key10YrMove515,--Key20YrMove516,--Key30rMove394,--MultiplierUp414 --MultiplierDown)AND H.AsOf = @localasofdateGROUP BY H.SecurityID, PM.PropertyIDDELETE FROM @propertydateWHEREAsOfDate IS NULLAND PropertyID NOT IN (394, 414)UPDATEPDSET PD.PropertyValue = SDF.PropertyValueFROM @propertydate PDINNER JOIN Analysis..tblSecDataFlt SDFONSDF.AsOfDate = PD.AsOfDateAND SDF.SecID = PD.SecIDAND SDF.PropertyID = PD.PropertyIDAND PD.AsOfDate IS NOT NULL--Set the 30 Yr key rate property = 20 Yr + 30 YrUPDATEPD1SET PD1.PropertyValue = ISNULL(PD1.PropertyValue, 0) + ISNULL(PD2.PropertyValue, 0)FROM@propertydate PD1LEFT OUTER JOIN @propertydate PD2 ON PD2.SecID = PD1.SecID AND PD2.PropertyID = 515WHEREPD1.PropertyID = 516--Average the mulitipliersUPDATEPD1SET PD1.PropertyValue = (ISNULL(ISNULL(PD1.PropertyValue, PD2.PropertyValue), 1) +ISNULL(ISNULL(PD2.PropertyValue, PD1.PropertyValue), 1)) / 2FROM@propertydate PD1LEFT OUTER JOIN @propertydate PD2 ON PD2.SecID = PD1.SecID AND PD2.PropertyID = 414WHEREPD1.PropertyID = 394DELETE FROM @propertydate WHERE PropertyID IN (414, 515)--Multiply the key rates by the multiplierUPDATEPD1SET PD1.PropertyValue = PD1.PropertyValue * PD2.PropertyValueFROM@propertydate PD1LEFT OUTER JOIN @propertydate PD2 ON PD2.SecID = PD1.SecID AND PD2.PropertyID = 394WHEREPD1.PropertyID != 394DELETE FROM @propertydate WHERE PropertyID = 394--***************************************tblWhseHlds*****************************************--KeySensDateUPDATEWHSETKeySensDate =( SELECT ISNULL(MAX(PD1.AsOfDate),'1/1/1900') FROM @propertydate PD1 WHERE PD1.SecID = WH.SecurityID AND PD1.PropertyID IN (509,510,511,512,513,514,515,516))FROMpmWhse..tblWhseHlds WHWHEREAsOf = @localasofdate--Key6MoMoveUPDATEpmWhse..tblWhseHldsSET Key6MoMove = PD1.PropertyValue * .01 * (pmWhse..tblWhseHlds.CFace * pmWhse..tblWhseHlds.QtyUnitFactor) * (pmWhse..tblWhseHlds.PriceUnitFactor * pmWhse..tblWhseHlds.Price)FROM@propertydate PD1WHEREPD1.SecID = pmWhse..tblWhseHlds.SecurityID AND PD1.PropertyID = 509 AND pmWhse..tblWhseHlds.AsOf = @localasofdate--Key1YrMoveUPDATEpmWhse..tblWhseHldsSET Key1YrMove = PD1.PropertyValue * .01 * (pmWhse..tblWhseHlds.CFace * pmWhse..tblWhseHlds.QtyUnitFactor) * (pmWhse..tblWhseHlds.PriceUnitFactor * pmWhse..tblWhseHlds.Price)FROM@propertydate PD1WHEREPD1.SecID = pmWhse..tblWhseHlds.SecurityID AND PD1.PropertyID = 510 AND pmWhse..tblWhseHlds.AsOf = @localasofdate--Key2YrMoveUPDATEpmWhse..tblWhseHldsSET Key2YrMove = PD1.PropertyValue * .01 * (pmWhse..tblWhseHlds.CFace * pmWhse..tblWhseHlds.QtyUnitFactor) * (pmWhse..tblWhseHlds.PriceUnitFactor * pmWhse..tblWhseHlds.Price)FROM@propertydate PD1WHEREPD1.SecID = pmWhse..tblWhseHlds.SecurityID AND PD1.PropertyID = 511 AND pmWhse..tblWhseHlds.AsOf = @localasofdate--Key3YrMoveUPDATEpmWhse..tblWhseHldsSET Key3YrMove = PD1.PropertyValue * .01 * (pmWhse..tblWhseHlds.CFace * pmWhse..tblWhseHlds.QtyUnitFactor) * (pmWhse..tblWhseHlds.PriceUnitFactor * pmWhse..tblWhseHlds.Price)FROM@propertydate PD1WHEREPD1.SecID = pmWhse..tblWhseHlds.SecurityID AND PD1.PropertyID = 512 AND pmWhse..tblWhseHlds.AsOf = @localasofdate--Key5YrMoveUPDATEpmWhse..tblWhseHldsSET Key5YrMove = PD1.PropertyValue * .01 * (pmWhse..tblWhseHlds.CFace * pmWhse..tblWhseHlds.QtyUnitFactor) * (pmWhse..tblWhseHlds.PriceUnitFactor * pmWhse..tblWhseHlds.Price)FROM@propertydate PD1WHEREPD1.SecID = pmWhse..tblWhseHlds.SecurityID AND PD1.PropertyID = 513AND pmWhse..tblWhseHlds.AsOf = @localasofdate--Key10YrMoveUPDATEpmWhse..tblWhseHldsSET Key10YrMove = PD1.PropertyValue * .01 * (pmWhse..tblWhseHlds.CFace * pmWhse..tblWhseHlds.QtyUnitFactor) * (pmWhse..tblWhseHlds.PriceUnitFactor * pmWhse..tblWhseHlds.Price)FROM@propertydate PD1WHEREPD1.SecID = pmWhse..tblWhseHlds.SecurityID AND PD1.PropertyID = 514AND pmWhse..tblWhseHlds.AsOf = @localasofdate--Key30YrMoveUPDATEpmWhse..tblWhseHldsSET Key30YrMove = PD1.PropertyValue * .01 * (pmWhse..tblWhseHlds.CFace * pmWhse..tblWhseHlds.QtyUnitFactor) * (pmWhse..tblWhseHlds.PriceUnitFactor * pmWhse..tblWhseHlds.Price)FROM@propertydate PD1WHEREPD1.SecID = pmWhse..tblWhseHlds.SecurityID AND PD1.PropertyID = 516AND pmWhse..tblWhseHlds.AsOf = @localasofdate--***************************************tblHoldings*****************************************--KeySensDateUPDATEHSETKeySensDate =( SELECT ISNULL(MAX(PD1.AsOfDate),'1/1/1900') FROM @propertydate PD1 WHERE PD1.SecID = H.SecurityID AND PD1.PropertyID IN (509,510,511,512,513,514,515,516))FROMpmWhse..tblHoldings HWHEREAsOf = @localasofdate--Key6MoMoveUPDATEpmWhse..tblHoldingsSET Key6MoMove = PD1.PropertyValue * .01 * (pmWhse..tblHoldings.CFace * pmWhse..tblHoldings.QtyUnitFactor) * (pmWhse..tblHoldings.PriceUnitFactor * pmWhse..tblHoldings.Price)FROM@propertydate PD1WHEREPD1.SecID = pmWhse..tblHoldings.SecurityID AND PD1.PropertyID = 509 AND pmWhse..tblHoldings.AsOf = @localasofdate--Key1YrMoveUPDATEpmWhse..tblHoldingsSET Key1YrMove = PD1.PropertyValue * .01 * (pmWhse..tblHoldings.CFace * pmWhse..tblHoldings.QtyUnitFactor) * (pmWhse..tblHoldings.PriceUnitFactor * pmWhse..tblHoldings.Price)FROM@propertydate PD1WHEREPD1.SecID = pmWhse..tblHoldings.SecurityID AND PD1.PropertyID = 510 AND pmWhse..tblHoldings.AsOf = @localasofdate--Key2YrMoveUPDATEpmWhse..tblHoldingsSET Key2YrMove = PD1.PropertyValue * .01 * (pmWhse..tblHoldings.CFace * pmWhse..tblHoldings.QtyUnitFactor) * (pmWhse..tblHoldings.PriceUnitFactor * pmWhse..tblHoldings.Price)FROM@propertydate PD1WHEREPD1.SecID = pmWhse..tblHoldings.SecurityID AND PD1.PropertyID = 511 AND pmWhse..tblHoldings.AsOf = @localasofdate--Key3YrMoveUPDATEpmWhse..tblHoldingsSET Key3YrMove = PD1.PropertyValue * .01 * (pmWhse..tblHoldings.CFace * pmWhse..tblHoldings.QtyUnitFactor) * (pmWhse..tblHoldings.PriceUnitFactor * pmWhse..tblHoldings.Price)FROM@propertydate PD1WHEREPD1.SecID = pmWhse..tblHoldings.SecurityID AND PD1.PropertyID = 512 AND pmWhse..tblHoldings.AsOf = @localasofdate--Key5YrMoveUPDATEpmWhse..tblHoldingsSET Key5YrMove = PD1.PropertyValue * .01 * (pmWhse..tblHoldings.CFace * pmWhse..tblHoldings.QtyUnitFactor) * (pmWhse..tblHoldings.PriceUnitFactor * pmWhse..tblHoldings.Price)FROM@propertydate PD1WHEREPD1.SecID = pmWhse..tblHoldings.SecurityID AND PD1.PropertyID = 513AND pmWhse..tblHoldings.AsOf = @localasofdate--Key10YrMoveUPDATEpmWhse..tblHoldingsSET Key10YrMove = PD1.PropertyValue * .01 * (pmWhse..tblHoldings.CFace * pmWhse..tblHoldings.QtyUnitFactor) * (pmWhse..tblHoldings.PriceUnitFactor * pmWhse..tblHoldings.Price)FROM@propertydate PD1WHEREPD1.SecID = pmWhse..tblHoldings.SecurityID AND PD1.PropertyID = 514AND pmWhse..tblHoldings.AsOf = @localasofdate--Key30YrMoveUPDATEpmWhse..tblHoldingsSET Key30YrMove = PD1.PropertyValue * .01 * (pmWhse..tblHoldings.CFace * pmWhse..tblHoldings.QtyUnitFactor) * (pmWhse..tblHoldings.PriceUnitFactor * pmWhse..tblHoldings.Price)FROM@propertydate PD1WHEREPD1.SecID = pmWhse..tblHoldings.SecurityID AND PD1.PropertyID = 516AND pmWhse..tblHoldings.AsOf = @localasofdate*****************************************************************DEADLOCK INFORMATION FROM ERRORLOG*****************************************************************2007-05-07 20:04:56.20 spid1 Deadlock encountered .... Printing deadlock information2007-05-07 20:04:56.20 spid1 2007-05-07 20:04:56.20 spid1 Wait-for graph2007-05-07 20:04:56.20 spid1 2007-05-07 20:04:56.20 spid1 Node:12007-05-07 20:04:56.20 spid1 PAG: 8:1:1807867 CleanCnt:2 Mode: SIU Flags: 0x22007-05-07 20:04:56.20 spid1 Grant List 0::2007-05-07 20:04:56.20 spid1 Owner:0x7074efc0 Mode: S Flg:0x0 Ref:1 Life:00000000 SPID:81 ECID:02007-05-07 20:04:56.20 spid1 SPID: 81 ECID: 0 Statement Type: INSERT Line #: 522007-05-07 20:04:56.20 spid1 Input Buf: Language Event: EXEC spQOpsRptDateAdjFactor '05/04/2007'2007-05-07 20:04:56.20 spid1 Grant List 1::2007-05-07 20:04:56.20 spid1 Requested By: 2007-05-07 20:04:56.20 spid1 ResType:LockOwner Stype:'OR' Mode: IX SPID:77 ECID:0 Ec:(0x5A4F1508) Value:0x4807a4a0 Cost:(0/1F4988)2007-05-07 20:04:56.20 spid1 2007-05-07 20:04:56.20 spid1 Node:22007-05-07 20:04:56.20 spid1 PAG: 8:1:1807868 CleanCnt:2 Mode: IX Flags: 0x22007-05-07 20:04:56.20 spid1 Grant List 1::2007-05-07 20:04:56.20 spid1 Owner:0x1ac946c0 Mode: IX Flg:0x0 Ref:4 Life:02000000 SPID:77 ECID:02007-05-07 20:04:56.20 spid1 SPID: 77 ECID: 0 Statement Type: UPDATE Line #: 2312007-05-07 20:04:56.20 spid1 Input Buf: Language Event: EXEC pmWhse..spUpdateKRD '05/04/07'2007-05-07 20:04:56.20 spid1 Requested By: 2007-05-07 20:04:56.20 spid1 ResType:LockOwner Stype:'OR' Mode: S SPID:81 ECID:0 Ec:(0x6C8BD370) Value:0x23ee8820 Cost:(0/0)2007-05-07 20:04:56.20 spid1 Victim Resource Owner:2007-05-07 20:04:56.20 spid1 ResType:LockOwner Stype:'OR' Mode: S SPID:81 ECID:0 Ec:(0x6C8BD370) Value:0x23ee8820 Cost:(0/0)********************************************************************The tblholding has the following INDEXES:IX_tblHoldings_1 nonclustered located on PRIMARY (AsOf, Portfolio, Security)IX_tblHoldings_2 nonclustered located on PRIMARY (GenId, Security, Portfolio)IX_tblHoldings_3 nonclustered located on PRIMARY (Security, Portfolio, AsOf)PK_tblHoldings clustered, unique, primary key located on PRIMARY (AsOf, PortfolioId, SecurityId, Coupon, MaturityDate, LotJagged) |
|