Re: AS OF queries
Alvaro Hernandez <aht@ongres.com>
From: Alvaro Hernandez <aht@ongres.com>
To: Konstantin Knizhnik <k.knizhnik@postgrespro.ru>,
Laurenz Albe <laurenz.albe@cybertec.at>,
PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2017-12-20T18:57:17Z
Lists: pgsql-hackers
On 20/12/17 14:48, Konstantin Knizhnik wrote: > > > On 20.12.2017 16:12, Laurenz Albe wrote: >> Konstantin Knizhnik wrote: >>> I wonder if Postgres community is interested in supporting time travel >>> queries in PostgreSQL (something like AS OF queries in Oracle: >>> https://docs.oracle.com/cd/B14117_01/appdev.101/b10795/adfns_fl.htm). >>> As far as I know something similar is now developed for MariaDB. >> I think that would be a good thing to have that could make >> the DBA's work easier - all the requests to restore a table >> to the state from an hour ago. > > Please notice that it is necessary to configure postgres in proper way > in order to be able to perform time travels. This makes sense. BTW, I believe this feature would be an amazing addition to PostgreSQL. > If you do not disable autovacuum, then old versions will be just > cleaned-up. > If transaction commit timestamps are not tracked, then it is not > possible to locate required timeline. > > So DBA should make a decision in advance whether this feature is > needed or not. > It is not a proper instrument for restoring/auditing existed database > which was not configured to keep all versions. > > May be it is better to add special configuration parameter for this > feature which should implicitly toggle > autovacuumand track_commit_timestamp parameters). Downthread a "moving xid horizon" is proposed. I believe this is not too user friendly. I'd rather use a timestamp horizon (e.g. "up to 2 days ago"). Given that the commit timestamp is tracked, I don't think this is an issue. This is the same as the undo_retention in Oracle, which is expressed in seconds. > > The obvious drawbacks of keeping all versions are > 1. Increased size of database. > 2. Decreased query execution speed because them need to traverse a lot > of not visible versions. In other words, what is nowadays called "bloat". I have seen in the field a lot of it. Not everybody tunes vacuum to keep up to date. So I don't expect this feature to be too expensive for many. While at the same time an awesome addition, not to fire a new separate server and exercise PITR, and then find the ways to move the old data around. Regards, Álvaro -- Alvaro Hernandez ----------- OnGres