Re: Deadlocks? What happened to MVCC?

From: Jan Wieck <JanWieck(at)Yahoo(dot)com>
To: Josh Berkus <josh(at)agliodbs(dot)com>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: Deadlocks? What happened to MVCC?
Date: 2001-08-14 20:46:45
Message-ID: 200108142046.f7EKkjc19066@jupiter.us.greatbridge.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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 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. #
#================================================== JanWieck(at)Yahoo(dot)com #

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

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Tom Lane 2001-08-14 21:35:31 Re: Deadlocks? What happened to MVCC?
Previous Message Randall Skelton 2001-08-14 20:35:29 psql connection being reset during function?