Skip site navigation (1) Skip section navigation (2)

Re: [WIP] shared locks

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl>
Cc: Patches <pgsql-patches(at)postgresql(dot)org>
Subject: Re: [WIP] shared locks
Date: 2005-04-19 00:00:57
Message-ID: 1207.1113868857@sss.pgh.pa.us (view raw or flat)
Thread:
Lists: pgsql-hackerspgsql-patches
Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl> writes:
> The idea is that a tuple's Xmax can either be a real TransactionId
> (which is used normally like current CVS tip), or, if the infomask has
> HEAP_XMAX_SHARED_LOCK, a MultiXactId.

Interesting idea.  Would it be possible to invoke this mechanism only
when actually needed --- that is, the first locker of a given tuple
puts his plain TransactionId into Xmax (and also sets an infomask bit
indicating his intent to have a shared rather than exclusive lock),
and then the second locker to come along replaces the TransactionId
with a MultiTransactionId including himself and the first locker?

This requires 2 infomask bits: 1 for shared vs exclusive lock and one
for whether the Xmax contains a TransactionId or MultiTransactionId.
But we have them available, and I think I like keeping those concepts
separate anyway.  (Who's to say we wouldn't want to allow a
MultiTransactionId to hold an exclusive lock, someday?)

The advantage of course would be substantially less overhead in the very
common case where there's no actual contention for the tuple.

> MultiXactIds are implemented using two SLRU areas and a couple of
> variables in ShmemVariableCache.  We also XLog groups of them just like
> we do for Oids.

So no need for expansible shmem storage?  Might be the way to go.
I haven't read the patch yet but the idea sounds promising.

			regards, tom lane

In response to

Responses

pgsql-hackers by date

Next:From: Olivier ThauvinDate: 2005-04-19 00:13:17
Subject: SETOF function call
Previous:From: Alvaro HerreraDate: 2005-04-18 23:22:53
Subject: [WIP] shared locks

pgsql-patches by date

Next:From: Bruce MomjianDate: 2005-04-19 01:53:38
Subject: Re: [WIP] shared locks
Previous:From: Alvaro HerreraDate: 2005-04-18 23:22:53
Subject: [WIP] shared locks

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group