AW: Vacuum only with 20% old tuples - Mailing list pgsql-hackers

From Zeugswetter Andreas SB
Subject AW: Vacuum only with 20% old tuples
Date
Msg-id 11C1E6749A55D411A9670001FA687963368026@sdexcsrv1.f000.d0188.sd.spardat.at
Whole thread Raw
Responses RE: Vacuum only with 20% old tuples  ("Hiroshi Inoue" <Inoue@tpf.co.jp>)
Re: AW: Vacuum only with 20% old tuples  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
> > It does not postpone anything. WAL only logs what it does:
> > 
> > 1. log i now start to rename file
> > 2. rename file
> 
> How do we log *rename* ?

No, step 2 was meant to do the actual rename.
You log before and after the actual rename.

> What I've meant by *rename* is to replace an existent table
> file by a (e.g. work temp) file.  So the old table file would
> vanish by renaming. 

you need to rename the old file first then the new file

> How to save the content for rollback ?

with rename of old file

> Is it preferable to save the content entirely to WAL log file ?

no, unless you have log space to spare, but not enough data space,
which is imho unlikely (or to be considered later).

> If *rename* is possible,are OID filenames necessary in the
> first place ? 

no

> 
> > 3. log rename successful or abort txn
> >
>  
> > > 
> > > No there's a significant difference between the failure 
> of  'delete'
> > > and that of 'rename'.  We would have no consistency problem even
> > > though 'delete' fails and wouldn't have to stop postmaster. But we
> > > wouldn't be able to see the renamed relation in case of 'rename'
> > > failure and an excellent(??) dba would have to recover the 
> > > inconsistency.
> > 
> > The dba only fixes the underlying problem, like filesystem 
> > mounted readonly 
> > or wrong permissions on directory. He then simply starts 
> the postmaster
> > again,
> > the rollforward with rename will then succeed.
> >
> 
> Mustn't a dba be there to restart the postmaster when *rename*
> fails ? We don't need a dba even when *delete* fails after commit.

The dba needs to clean up unused file space later, 
which leaves the problem for the dba to decide which file is needed 
and what not (quite difficult with an oid filename).

But, rename is only supposed to fail if something is wrong with the
filesystem or directory. There will be a lot of other problems,
like creating sort files etc if that is the case. 
If a rename fails under normal operation the current transaction is aborted,
but you are correct that there is a problem if previous renames in the same 
transaction succeeded, but all further renames (for rollback) fail (is this
likely ?).
In that unlikely case I would bail out, let the dba fix the problem and fix
the db
state at startup rollforward (which can now rename and thus abort the txn). 

Andreas


pgsql-hackers by date:

Previous
From: Don Baccus
Date:
Subject: Re: INET/CIDR types
Next
From: Vince Vielhaber
Date:
Subject: pg_shadow