If the deadlock is on a page, have you spawned multiple transactions off
of the initial transaction and each of these spawned transaction is
trying to store a new via record against the same owning calc record?
(That's what's happening to us.) If so, there's not much you can do
about it besides having the transaction wait a period of time and retry.
Also, look at the programs involved in the deadlock. Any pattern there?
I use the following macro snip (From KEX - a REXX look alike for the PC)
to determine what's causing the deadlocks. (This is part of a larger
macro I use to parse PRINTLOG output to see what's going on.)
The format is C (for change) / (string marker) source string / (string
marker) change to string / (string marker) * * (all occurrences on all
rows)
C/R:LTXNLOCK 00000008/R:LTXNLOCK page group = 0 xx=00=db-key =/* *
C/R:LTXNLOCK 00010008/R:LTXNLOCK page group = 1 xx=00=db-key =/* *
C/LTXNLOCK 00002008/LTXNLOCK page group = 0 xx=20=page number (space
mgmt lock) =/* *
C/LTXNLOCK 00000108/LTXNLOCK page group = 0 xx=01=page number (PAGE
lock) =/* *
C/LTXNLOCK 00008008/LTXNLOCK page group = 0 xx=80=page number (AREA
lock) =/* *
C/LTXNLOCK 00012008/LTXNLOCK page group = 1 xx=20=page number (space
mgmt lock) =/* *
C/LTXNLOCK 00010108/LTXNLOCK page group = 1 xx=01=page number (PAGE
lock) =/* *
C/LTXNLOCK 00018008/LTXNLOCK page group = 1 xx=80=page number (AREA
lock) =/* *
Hope it helps,
Dick
Richard Pierce
(617) 973-8911
richard.pierce@state.ma.us