Re: Deadlocks? What happened to MVCC? - Mailing list pgsql-sql

From Jan Wieck
Subject Re: Deadlocks? What happened to MVCC?
Date
Msg-id 200108142046.f7EKkjc19066@jupiter.us.greatbridge.com
Whole thread Raw
In response to Deadlocks? What happened to MVCC?  ("Josh Berkus" <josh@agliodbs.com>)
List pgsql-sql
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
rowB       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.                                  #
#================================================== JanWieck@Yahoo.com #



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



pgsql-sql by date:

Previous
From: Gary Stainburn
Date:
Subject: Re: Re: Are circular REFERENCES possible ?
Next
From: Jan Wieck
Date:
Subject: Re: Date: the day before yesterday.