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
Re: Deriving Recovery Snapshots |
Список | 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 по дате отправления: