Re: Serializable Snapshot Isolation - Mailing list pgsql-hackers

From Heikki Linnakangas
Subject Re: Serializable Snapshot Isolation
Date
Msg-id 4C951545.6050604@enterprisedb.com
Whole thread Raw
In response to Re: Serializable Snapshot Isolation  (Kevin Grittner <grimkg@gmail.com>)
Responses Re: Serializable Snapshot Isolation
List pgsql-hackers
On 18/09/10 21:52, Kevin Grittner wrote:
> [Apologies for not reply-linking this; work email is down so I'm
> sending from gmail.]
>
> Based on feedback from Heikki and Tom I've reworked how I find the
> top-level transaction.  This is in the git repo, and the changes can
> be viewed at:
>
>
http://git.postgresql.org/gitweb?p=users/kgrittn/postgres.git;a=commitdiff;h=e29927c7966adba2443fdc4f64da9d282f95a05b

Thanks, much simpler. Now let's simplify it some more ;-)

ISTM you never search the SerializableXactHash table using a hash key, 
except the one call in CheckForSerializableConflictOut, but there you 
already have a pointer to the SERIALIZABLEXACT struct. You only re-find 
it to make sure it hasn't gone away while you trade the shared lock for 
an exclusive one. If we find another way to ensure that, ISTM we don't 
need SerializableXactHash at all. My first thought was to forget about 
VirtualTransactionId and use TransactionId directly as the hash key for 
SERIALIZABLEXACT. The problem is that a transaction doesn't have a 
transaction ID when RegisterSerializableTransaction is called. We could 
leave the TransactionId blank and only add the SERIALIZABLEXACT struct 
to the hash table when an XID is assigned, but there's no provision to 
insert an existing struct to a hash table in the current hash table API.

So, I'm not sure of the details yet, but it seems like it could be made 
simpler somehow..

--   Heikki Linnakangas  EnterpriseDB   http://www.enterprisedb.com


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: psql's \dn versus temp schemas
Next
From: Robert Haas
Date:
Subject: Re: Configuring synchronous replication