Re: slow dropping of tables, DropRelFileNodeBuffers, tas

From: Jeff Janes <jeff(dot)janes(at)gmail(dot)com>
To: Simon Riggs <simon(at)2ndquadrant(dot)com>
Cc: Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>, Sergey Koposov <koposov(at)ast(dot)cam(dot)ac(dot)uk>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: slow dropping of tables, DropRelFileNodeBuffers, tas
Date: 2012-06-03 18:07:48
Message-ID: CAMkU=1xYAaLFztn9R+p26qhKjaua-1i5cBi9uTPy_bGR=DPOvA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Thu, May 31, 2012 at 5:04 AM, Simon Riggs <simon(at)2ndquadrant(dot)com> wrote:
> On 30 May 2012 12:10, Heikki Linnakangas
> <heikki(dot)linnakangas(at)enterprisedb(dot)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 Content-Type Size
DropRelFileNodeBuffers_unlock_v1.patch application/octet-stream 717 bytes

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Jeff Janes 2012-06-03 19:49:15 Re: Add primary key/unique constraint using prefix columns of an index
Previous Message Dave Page 2012-06-03 10:41:59 Re: Visual Studio 2012 RC