Re: Deriving Recovery Snapshots

Поиск
Список
Период
Сортировка
От Heikki Linnakangas
Тема Re: Deriving Recovery Snapshots
Дата
Msg-id 48F76342.5070407@enterprisedb.com
обсуждение исходный текст
Ответ на Deriving Recovery Snapshots  (Simon Riggs <simon@2ndQuadrant.com>)
Ответы Re: Deriving Recovery Snapshots  (Simon Riggs <simon@2ndQuadrant.com>)
Re: Deriving Recovery Snapshots  (Hannu Krosing <hannu@2ndQuadrant.com>)
Список pgsql-hackers
Simon Riggs wrote:
> Each backend that existed on the master is represented by a PROC
> structure in the ProcArray. These are known as "recovery procs" and are
> similar to the dummy procs used for prepared transactions. All recovery
> procs are "owned by" the Startup process. So there is no process for
> which MyProc points to one of the recovery procs. This structure allows
> us to record the top-level transactions and then put subtransactions in
> the proc's subtransaction cache. A fixed one-to-one correspondence
> allows efficient maintenance of the structures. We emulate all
> transactional backend, including autovac.

We'll need to know the max_connections setting in the master, in order 
to size the array correctly. Not a show-stopper, but would be nicer if 
we didn't need to.

> * The backend slot may not be reused for some time, so we should take
> additional actions to keep state current and true. So we choose to log a
> snapshot from the master into WAL after each checkpoint. This can then
> be used to cleanup any unobserved xids. It also provides us with our
> initial state data, see later.

We don't need to log a complete snapshot, do we? Just oldestxmin should 
be enough.

> UnobservedXids is maintained as a sorted array. This comes for free
> since xids are always added in xid assignment order. This allows xids to
> be removed via bsearch when WAL records arrive for the missing xids. It
> also allows us to stop searching for xids once we reach
> latestCompletedXid.

If we're going to have an UnobservedXids array, why don't we just treat 
all in-progress transactions as Unobserved, and forget about the dummy 
PROC entries?

Also, I can't help thinking that this would be a lot simpler if we just 
treated all subtransactions the same as top-level transactions. The only 
problem with that is that there can be a lot of subtransactions, which 
means that we'd need a large UnobservedXids array to handle the worst 
case, but maybe it would still be acceptable?

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


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

Предыдущее
От: Rainer Bauer
Дата:
Сообщение: Re: 8.3 .4 + Vista + MingW + initdb = ACCESS_DENIED
Следующее
От: Martijn van Oosterhout
Дата:
Сообщение: Re: Cross-column statistics revisited