Hi hackers!
Here is prototype of procrastinating GiST. Or lazy GiST. Or buffered GiST. Indeed, there is nothing fractal about it.
The concept is leaf tuples stall on internal pages. From time to time they are pushed down in batches. This code is far from perfect, I've coded this only for the research purposes.
I have tested code with insertion of random 3D cubes. On 1 million of insertions classic GiST is 8% faster, on 3M performance is equal, on 30M lazy GiST if 12% faster.
I've tested it with SSD disk, may be with HDD difference will be more significant.
In theory, this is cache friendly implementation (but not cache oblivious) and it must be faster even for small datasets without huge disk work. But it has there extra cost of coping batch of tuples to palloc`d array, couln't avoid that.
This is just a proof-of-concept for performance measrures:
1. make check fails for two tests
2. WAL is broken
3. code is a mess in some places
I'm not sure 12% of performance worth it. I'll appreciate any ideas on what to do next.
Best regards, Andrey Borodin.