Hello.

At Fri, 30 Mar 2018 08:31:29 +0900, Fujii Masao <masao.fu...@gmail.com> wrote 
in <cahgqgwhvqkdfdqtvgvkty+19cqakaydxn1etgnd3x0phbz3...@mail.gmail.com>
> Hi,
> 
> When multiple relations are deleted at the same transaction,
> the files of those relations are deleted by one call to smgrdounlinkall(),
> which leads to scan whole shared_buffers only one time. OTOH,
> during recovery, smgrdounlink() (not smgrdounlinkall()) is called
> for each file to delete, which leads to scan shared_buffers multiple times.
> Obviously this can cause to increase the WAL replay time very much
> especially when shared_buffers is huge.
> 
> To alleviate this situation, I'd like to propose to change the recovery
> so that it also calls smgrdounlinkall() only one time to delete multiple
> relation files. Patch attached. Thought?

It is obviously a left-over of 279628a0a7. This patch applies the
same change with the patch and looks fine for me. Note that
FinishPreparedTransaction has the same loop over smgrdounlink.

regards,

-- 
Kyotaro Horiguchi
NTT Open Source Software Center


Reply via email to