From: | Jim Nasby <Jim(dot)Nasby(at)BlueTreble(dot)com> |
---|---|
To: | Andreas Joseph Krogh <andreas(at)visena(dot)com>, <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: How to keep pg_largeobject from growing endlessly |
Date: | 2015-04-20 18:27:39 |
Message-ID: | 5535451B.5090607@BlueTreble.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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(dot)Nasby(at)BlueTreble(dot)com <mailto:Jim(dot)Nasby(at)BlueTreble(dot)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(at)adamhooper(dot)com <mailto:adam(at)adamhooper(dot)com>>:
> >
> > On Wed, Apr 15, 2015 at 9:57 AM, Andreas Joseph Krogh
> > <andreas(at)visena(dot)com> wrote:
> > >
> > > På onsdag 15. april 2015 kl. 15:50:36, skrev Adam Hooper
> > <adam(at)adamhooper(dot)com>:
> > >
> > > On Wed, Apr 15, 2015 at 4:49 AM, Andreas Joseph Krogh
> > > <andreas(at)visena(dot)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
From | Date | Subject | |
---|---|---|---|
Next Message | Andreas Joseph Krogh | 2015-04-20 18:48:48 | Re: How to keep pg_largeobject from growing endlessly |
Previous Message | David G. Johnston | 2015-04-20 16:42:39 | Re: "Cast" SRF returning record to a table type? |