Re: slow dropping of tables, DropRelFileNodeBuffers, tas - Mailing list pgsql-hackers

From Jeff Janes
Subject Re: slow dropping of tables, DropRelFileNodeBuffers, tas
Date
Msg-id CAMkU=1xYAaLFztn9R+p26qhKjaua-1i5cBi9uTPy_bGR=DPOvA@mail.gmail.com
Whole thread Raw
In response to Re: slow dropping of tables, DropRelFileNodeBuffers, tas  (Simon Riggs <simon@2ndQuadrant.com>)
Responses Re: slow dropping of tables, DropRelFileNodeBuffers, tas
Re: slow dropping of tables, DropRelFileNodeBuffers, tas
List pgsql-hackers
On Thu, May 31, 2012 at 5:04 AM, Simon Riggs <simon@2ndquadrant.com> wrote:
> On 30 May 2012 12:10, Heikki Linnakangas
> <heikki.linnakangas@enterprisedb.com> wrote:
>
>> Hmm, we do this in smgrDoPendingDeletes:
>>
>> for (i = 0; i <= MAX_FORKNUM; i++)
>> {
>>        smgrdounlink(srel, i, false);
>> }
>>
>> So we drop the buffers for each relation fork separately, which means that
>> we scan the buffer pool four times. Relation forks in 8.4 introduced that
>> issue, and 9.1 made it worse by adding another fork for unlogged tables.
>> With some refactoring, we could scan the buffer pool just once. That would
>> help a lot.
>
> That struck me as a safe and easy optimisation. This was a problem I'd
> been trying to optimise for 9.2, so I've written a patch that appears
> simple and clean enough to be applied directly.

By directly do you mean before the fork/commit fest begins?

>
>> Also, I wonder if DropRelFileNodeBuffers() could scan the pool without
>> grabbing the spinlocks on every buffer? It could do an unlocked test first,
>> and only grab the spinlock on buffers that need to be dropped.
>
> Sounds less good and we'd need reasonable proof it actually did
> anything useful without being dangerous.

Doing an initial unlocked test speeds things up another 2.69 fold (on
top of 3.55 for your patch) for me, with 1GB of shared buffers.  That
seems like it should be worthwhile.

How do we go about getting reasonable proof that it is safe?

Thanks,

Jeff

Attachment

pgsql-hackers by date:

Previous
From: Dave Page
Date:
Subject: Re: Visual Studio 2012 RC
Next
From: Jeff Janes
Date:
Subject: Re: Add primary key/unique constraint using prefix columns of an index