Re: How to keep pg_largeobject from growing endlessly - Mailing list pgsql-general

From Jim Nasby
Subject Re: How to keep pg_largeobject from growing endlessly
Date
Msg-id 5535451B.5090607@BlueTreble.com
Whole thread Raw
In response to Re: How to keep pg_largeobject from growing endlessly  (Andreas Joseph Krogh <andreas@visena.com>)
Responses Re: How to keep pg_largeobject from growing endlessly
List pgsql-general
On 4/17/15 4:29 PM, Andreas Joseph Krogh wrote:
> På fredag 17. april 2015 kl. 21:11:05, skrev Jim Nasby
> <Jim.Nasby@BlueTreble.com <mailto:Jim.Nasby@BlueTreble.com>>:
>
>     On 4/15/15 9:22 AM, Andreas Joseph Krogh wrote:
>      > På onsdag 15. april 2015 kl. 16:05:22, skrev Adam Hooper
>      > <adam@adamhooper.com <mailto:adam@adamhooper.com>>:
>      >
>      >     On Wed, Apr 15, 2015 at 9:57 AM, Andreas Joseph Krogh
>      >     <andreas@visena.com> wrote:
>      >      >
>      >      > På onsdag 15. april 2015 kl. 15:50:36, skrev Adam Hooper
>      >     <adam@adamhooper.com>:
>      >      >
>      >      > On Wed, Apr 15, 2015 at 4:49 AM, Andreas Joseph Krogh
>      >      > <andreas@visena.com> wrote:
>      >      > >
>      >      > > In other words: Does vacuumlo cause diskspace used by
>      >     pg_largeobject to be freed to the OS (after eventually
>     vacuumed by
>      >     autovacuum)?
>      >      >
>      >      > No.
>      >      >
>      >      > Ok. Out of curiousity; When does it get freed, when VACUUM
>     FULL'ed?
>      >
>      >     Yes. VACUUM FULL or CLUSTER will free the space. (Of course,
>     you need
>      >     a lot of free disk space to perform those operations.)
>      >
>      > I'm sure there's a good reason for why VACUUM FULL needs to
>     rewreite the
>      > whole table and cannot "just free the unused space to the OS".
>
>     I think mostly because no one's written something to incrementally
>     delete the old data as it's moved. That would be a non-trivial amount of
>     work though, because none of the internal APIs are really setup the way
>     you'd need them to be to allow for this.
>
>     Also, I think there's some mis-information about vacuum returning space
>     to the filesystem. It definitely WILL return space to the filesystem,
>     but only under a very strict set of conditions:
>
>     - There must be a sufficient amount of free space *at the end of the
>     relation*
>     - It must be able to quickly acquire the correct lock
>     - It will start truncating pages off the relation until it detects
>     someone else is blocked on the lock it's holding. At that point it stops
>     what it's doing
>
>     So when the right set of circumstances occur, a plain vacuum will return
>     free space; but on a heavily hit table it's very hard for that to happen
>     in practice.
>
>     What you might want to do here is essentially re-create the large object
>     interface but allow it to hit any table instead of being force to use
>     the system one. That would open up the possibility of using tools like
>     pg_repack and table partitioning. You could do this in pure SQL, but the
>     community might welcome a patch that adds the ability to use different
>     tables to the existing large object API.
>     --
>     Jim Nasby, Data Architect, Blue Treble Consulting
>     Data in Trouble? Get it in Treble! http://BlueTreble.com
>
> Thanks for the info.
> There seems to be not much happening with the large-object API (and
> pg_largeobject's restriction being a system-catalog). Are there any
> plans to improve it. I see 2 (for me) obvious enhancements; 1. Being
> able to move the LO-table (for now pg_largeobject) to another tablespace
> without restarting the cluster in single-user mode, and 2, improvements
> to free space to the OS.

ISTM what would be better is allowing people to define new LO tables, so
we're not stuck trying to cram all LOs into a single table.

As for returning free space, that's a bit of a challenge period, for all
tables.

> Would crowd-funding help here?

Possibly. The first thing is getting the community to agree that there's
a problem that needs to be fixed. Once that's accomplished crowd funding
would be a good way to get it actually built.
--
Jim Nasby, Data Architect, Blue Treble Consulting
Data in Trouble? Get it in Treble! http://BlueTreble.com


pgsql-general by date:

Previous
From: "David G. Johnston"
Date:
Subject: Re: "Cast" SRF returning record to a table type?
Next
From: Andreas Joseph Krogh
Date:
Subject: Re: How to keep pg_largeobject from growing endlessly