Re: How many Mandatory Process are there in Postgres - Mailing list pgsql-general

From Scott Mead
Subject Re: How many Mandatory Process are there in Postgres
Date
Msg-id d3ab2ec81003251019i3e6bf3dfqc3ab1215da6b8152@mail.gmail.com
Whole thread Raw
In response to Re: How many Mandatory Process are there in Postgres  (tv@fuzzy.cz)
Responses Re: How many Mandatory Process are there in Postgres  (Tadipathri Raghu <traghu.dba@gmail.com>)
List pgsql-general
2010/3/25 <tv@fuzzy.cz>

<Snip>


>> Oracle uses a completely different implementation of MVCC architecture.
>> It
>> overwrites the data and then uses rollback segments to provide 'previous
>> versions' to running transactions etc.
>>
>> PostgreSQL does not overwrite the data - it just creates a copy of the
>> row
>> and then decides which version should each session see (depending on the
>> transaction IDs etc.). So it does not need to do rollbacks the way
>> Oracle
>> does, but it has to remove stale copies of the rows (such that no
>> running
>> transaction can see) - that's why there is VACUUM.
>
>
> Here, if you have issued a command pg_start_backup() at that time the
> cluster is freezed, and if any transaction takes place before the
> pg_stop_backup() issued at that time where the transaction data will be
> kept
> if the undo's are not there.

What do you mean by 'freezed'? The cluster operates normally, the
pg_start_backup() just creates a backup label (and performs a checkpoint),
but that's not a problem. OK, there could be a performance decrease
because of full page writes, but the data will be processed as if there is
no backup running. PostgreSQL does not need the checkpoints to perform
backup.

The 'UNDO' data is just kept in the main data files.  Then, based on what your xid is, and the xmin / xmax on each row, it's either visible or not.  That's what vacuum does, clean up the rows that are for 'undo' and can never been seen anymore.  The REDO itself is kept in the transaction logs.

Like Thomas says, the pg_start_backup() just creates a label that tells the restoring database what pg_xlog record to start with when you 'restore' your data.  The 'UNDO' type of data (just the old rows actually) is just kept in the main table until vacuum nukes 'em.

--Scott

pgsql-general by date:

Previous
From: akp geek
Date:
Subject: Re: tables getting bloated
Next
From: Chris Barnes
Date:
Subject: Does anyone use in ram postgres database?