Thank you for remembering this problem, at least for me.

Well, turns out there's a quite significant difference, actually. The
index sizes I get (quite stable after multiple runs):

    9.5 : 2428 MB
    9.6 + alone cleanup : 730 MB
    9.6 + pending lock : 488 MB
Interesting, I don't see why alone_cleanup and pending_lock are so differ. I'd like to understand that, but does somebody have an good theory? The single point in pending_lock patch is an suspicious exception in ProcSleep, this exception may cause problem in future.

So that's quite a significant difference, I guess. The load duration for
each version look like this:

    9.5                 : 1415 seconds
    9.6 + alone cleanup : 1310 seconds
    9.6 + pending lock  : 1380 seconds

I'd say I'm happy with sacrificing ~5% of time in exchange for ~35%
reduction of index size.
I think, alone_cleanup patch is faster because regular insert could break its cleanup process if autovacuum waits to begin work on cleanup. So, insert process could returns earlier from pending cleanup process.

In attachment just rebased v2 alone_cleanup patch.
Teodor Sigaev                                   E-mail:

Attachment: gin_alone_cleanup-3.patch
Description: binary/octet-stream

Sent via pgsql-hackers mailing list (
To make changes to your subscription:

Reply via email to