Re: New feature request: FlashBack Query - Mailing list pgsql-hackers

From Hannu Krosing
Subject Re: New feature request: FlashBack Query
Date
Msg-id 1171835134.3305.44.camel@localhost.localdomain
Whole thread Raw
In response to Re: New feature request: FlashBack Query  ("Chad Wagner" <chad.wagner@gmail.com>)
Responses Re: New feature request: FlashBack Query  ("Joshua D. Drake" <jd@commandprompt.com>)
List pgsql-hackers
Ühel kenal päeval, L, 2007-02-17 kell 22:49, kirjutas Chad Wagner:

> 
> 
>         However, they don't have vacuum, we do.
> 
> Right, and I think that is more or less because Oracle doesn't need
> it.  Vacuum's main purpose (correct me if I am wrong) is to
> recover/mark rows that are no longer used, and Oracle essentially
> reuses the space immediately. 
> 
> Obviously with Oracle if you bloat out a table and delete a ton of
> rows then you have to rebuild the table, but that is more or less the
> same problem that PostgreSQL has and where vacuum full comes into
> play.
> 
> The only benefit with the Oracle model is that you can achieve
> flashback, which is a very rarely used feature in my book.

We can have flashbacks up to the last vacuum. It is just not exposed.
Don't vacuum, and you have the whole history. (Actually you can't go for
more than 2G transactions, or you get trx id rollover).

To get a flashback query, you "just" have to construct a snapshot from
that time and you are done. We don't store transaction times anywere, so
the flashback has to be by transaction id, but there is very little
extra work involved. We just don't have syntax for saying "SELECT ... AS
SEEN BY TRANSACTION XXX"

AFAIK, Oracles flashbacks also can go as far back as there are rollback
segments.

Postgres' original design prescribed, that VACUUM would not delete dead
tuples, but just move them to history tables on cheap(er) WORM storage.
Doing that would have very little overhead (except writing the old
tuples) and would not need any fundamental changes to how we do things
currently.

>   The disadvantages is likely overhead to perform the "rollback" and
> possibly more scattered reads.  

I've also heard reports, that doing concurrent data loading and big
analysis queries is a royal pain in Oracle.

> I can say that I have used it, and it has come in handy, but hardly
> worth it.  The benefit with the PostgreSQL model is the likelihood of
> the old rows being inline with the rest of the table data, potentially
> reducing scattered reads.  The disadvantage is vacuuming, it seems to
> be often overlooked -- possibly solved by defaulting autovacuum to on?
> (seems to be the way Oracle is heading, defaulting statistics
> collection to on and other management features). 
> 
-- 
----------------
Hannu Krosing
Database Architect
Skype Technologies OÜ
Akadeemia tee 21 F, Tallinn, 12618, Estonia

Skype me:  callto:hkrosing
Get Skype for free:  http://www.skype.com



pgsql-hackers by date:

Previous
From: Enrico
Date:
Subject: Re: return varchar from C function
Next
From: "Joshua D. Drake"
Date:
Subject: Re: New feature request: FlashBack Query