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
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? |