Re: Serializable Snapshot Isolation

Поиск
Список
Период
Сортировка
От Heikki Linnakangas
Тема Re: Serializable Snapshot Isolation
Дата
Msg-id 4C951545.6050604@enterprisedb.com
обсуждение исходный текст
Ответ на Re: Serializable Snapshot Isolation  (Kevin Grittner <grimkg@gmail.com>)
Ответы Re: Serializable Snapshot Isolation  (Kevin Grittner <grimkg@gmail.com>)
Список 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 по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: psql's \dn versus temp schemas
Следующее
От: Robert Haas
Дата:
Сообщение: Re: Configuring synchronous replication