drop/truncate table sucks for large values of shared buffers - Mailing list pgsql-hackers

From Amit Kapila
Subject drop/truncate table sucks for large values of shared buffers
Date
Msg-id CAA4eK1JPLGjpMeJ5YLNE7bpNBhP2EQe_rDR+Aw3atNfj9WkAGg@mail.gmail.com
Whole thread Raw
Responses Re: drop/truncate table sucks for large values of shared buffers  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: drop/truncate table sucks for large values of shared buffers  (Gurjeet Singh <gurjeet@singh.im>)
Re: drop/truncate table sucks for large values of shared buffers  (Heikki Linnakangas <hlinnaka@iki.fi>)
List pgsql-hackers
Sometime back on one of the PostgreSQL blog [1], there was
discussion about the performance of drop/truncate table for
large values of shared_buffers and it seems that as the value
of shared_buffers increase the performance of drop/truncate
table becomes worse.  I think those are not often used operations,
so it never became priority to look into improving them if possible.

I have looked into it and found that the main reason for such
a behaviour is that for those operations it traverses whole
shared_buffers and it seems to me that we don't need that
especially for not-so-big tables.  We can optimize that path
by looking into buff mapping table for the pages that exist in
shared_buffers for the case when table size is less than some
threshold (say 25%) of shared buffers.

Attached patch implements the above idea and I found that
performance doesn't dip much with patch even with large value
of shared_buffers.  I have also attached script and sql file used
to take performance data.

m/c configuration
--------------------------
IBM POWER-7 16 cores, 64 hardware threads
RAM = 64GB



Shared_buffers (MB)/Tps83212810248192
HEAD – commit 13813012410348
Patch138132132130133
    
I have observed that this optimization has no effect if the value of
shared_buffers is small (say 8MB, 16MB, ..), so I have used it only
when value of shared_buffers is greater than equal to 32MB.

We might want to use similar optimisation for DropRelFileNodeBuffers()
as well.

Suggestions?




With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com
Attachment

pgsql-hackers by date:

Previous
From: Amit Kapila
Date:
Subject: Re: Semantics of pg_file_settings view
Next
From: Michael Paquier
Date:
Subject: Re: Removing SSL renegotiation (Was: Should we back-patch SSL renegotiation fixes?)