Re: PushActiveSnapshot(GetTransactionSnapshot())

Поиск
Список
Период
Сортировка
От Alvaro Herrera
Тема Re: PushActiveSnapshot(GetTransactionSnapshot())
Дата
Msg-id 1314036146-sup-8140@alvh.no-ip.org
обсуждение исходный текст
Ответ на PushActiveSnapshot(GetTransactionSnapshot())  (Simon Riggs <simon@2ndQuadrant.com>)
Ответы Re: PushActiveSnapshot(GetTransactionSnapshot())  (Simon Riggs <simon@2ndQuadrant.com>)
Список pgsql-hackers
Excerpts from Simon Riggs's message of dom ago 21 16:23:39 -0300 2011:
> In common cases of snapshot use we run GetSnapshotData() into a
> statically allocated snapshot, then immediately copy the static struct
> into a dynamically allocated copy.
> 
> The static allocation was designed to remove the overhead of dynamic
> allocation, but then we do it anyway.
> 
> The snapmgr code does this explicitly, but the reason isn't
> documented, it just says we must do this.

IIRC the active snapshot is scribbled onto by some operations, which is
why the copy is mandatory.  Maybe there's some way to optimize things so
that the copy is done only when necessary.  IIRC the copying of the
ActiveSnapshot was only introduced because some subtle bugs were
detected in the code without copy.  When I introduced the mandatory
copy, I don't remember thinking about the statically allocated struct.

The fact that PushActiveSnapshot and GetTransactionSnapshot are in two
completely separate modules complicates optimization.  Note I'm not
saying it's impossible -- I just didn't look into it.

-- 
Álvaro Herrera <alvherre@commandprompt.com>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Robert Haas
Дата:
Сообщение: Re: Rethinking sinval callback hook API
Следующее
От: "Erik Rijkers"
Дата:
Сообщение: 9.1rc1: TRAP: FailedAssertion("!(item_width > 0)", File: "costsize.c", Line: 3274)