Josh Berkus wrote:
> Folks:
>
> I'm getting deadlock errors on one of the operations on my web
> application.  It's a function which adds a large number of rows to a
> holding table, then updates that set of rows multiple times in order to
> present scoring information to the user.
>
> However, the function is deadlocking itself once it's in heavy use.  I
> though that MVCC was supposed to supercede deadlocks, unless I
> specifically set locks, which I'm not.
>
> Help, anyone?

    You   must   have  misunderstood  something.  MVCC  does  not
    supersede deadlocks, nor can it prevent them. All  MVCC  does
    is to help "readers" not beeing blocked by "writers" and vice
    versa, by avoiding the need for  shared  "read"  locks.   But
    writers  still  need  locks,  so  if  your  application  does
    something like

        Xact-1: Starts transaction
        Xact-2: Starts transaction
        Xact-1: Updates row A
        Xact-2: Updates row B
        Xact-1: Wants to update row B (blocks)
        Xact-2: Wants to update row A

    then it's a deadlock. A deadlock is a deadlock and remains to
    be a deadlock, no matter if you have versioning or not.


Jan

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#================================================== [EMAIL PROTECTED] #



_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com


---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

http://www.postgresql.org/search.mpl

Reply via email to