Re: Hot Standby (v9d)

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Hannu Krosing <hannu@krosing.net>
Cc: Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>, Tom Lane <tgl@sss.pgh.pa.us>, jd@commandprompt.com, Simon Riggs <simon@2ndQuadrant.com>, Gregory Stark <stark@enterprisedb.com>, Mark Kirkwood <markir@paradise.net.nz>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2009-02-03T14:55:45Z
Lists: pgsql-hackers
Hi,

On 02/03/2009 02:26 PM, Hannu Krosing wrote:
>> I don't see any way around the fact that when a tuple is removed, it's
>> gone and can't be accessed by queries. Either you don't remove it, or
>> you kill the query.
> Actually we came up with a solution to this - use filesystem level
> snapshots (like LVM2+XFS or ZFS), and redirect backends with
> long-running queries to use fs snapshot mounted to a different
> mountpoint.
Isn't that really, really expensive?

A single write on the master logical volume yields writes of PE size 
for _every_ single snapshot (the first time the block is touched) - 
considering that there could quite many such snapshots I don't think 
that this is really feasible - io quite possible might be saturated.

The default PE size is 4MB - but on most bigger systems it is set to a 
bigger size, so its just getting worse for bigger systems.

Sure, one might say, that this is an LVM deficiency - but I do knot know 
of any snapshot-able block layer doing it that way.

Andres