On Fri, Sep 27, 2013 at 6:44 PM, Sawada Masahiko <sawada.m...@gmail.com> wrote: > On Fri, Sep 27, 2013 at 5:18 PM, Pavan Deolasee > <pavan.deola...@gmail.com> wrote: >> On Fri, Sep 27, 2013 at 1:28 PM, Sawada Masahiko <sawada.m...@gmail.com> >> wrote: >>> >>> >>> > >>> >>> Thank you for comment. I think it is good simple idea. >>> In your opinion, if synchronous_transfer is set 'all' and >>> synchronous_commit is set 'on', >>> the master wait for data flush eve if user sets synchronous_commit to >>> 'local' or 'off'. >>> For example, when user want to do transaction early, user can't do this. >>> we leave the such situation as constraint? >>> >> >> No, user can still override the transaction commit point wait. So if >> >> synchronous_transfer is set to "all": >> - If synchronous_commit is ON - wait at all points >> - If synchronous_commit is OFF - wait only at buffer flush (and other >> related to failback safety) points >> >> synchronous_transfer is set to "data_flush": >> - If synchronous_commit is either ON o OFF - do not wait at commit points, >> but wait at all other points >> >> synchronous_transfer is set to "commit": >> - If synchronous_commit is ON - wait at commit point >> - If synchronous_commit is OFF - do not wait at any point >> > > Thank you for explain. Understood. > if synchronous_transfer is set 'all' and user changes > synchronous_commit to 'off'( or 'local') at a transaction, > the master server wait at buffer flush, but doesn't wait at commit > points. Right? > > In currently patch, synchronous_transfer works in cooperation with > synchronous_commit. > But if user changes synchronous_commit at a transaction, they are not > in cooperation. > So, your idea might be better than currently behaviour of > synchronous_transfer.
I attached the v11 patch which have fixed following contents. - synchronous_transfer controls to wait at only data flush level, synchronous_commit controls to wait at commit level. ( Based on Pavan suggestion) - If there are no sync replication standby name, both synchronous_commit and synchronous_transfer don't work. - Fixed that we didn't support failback-safe standby. Previous patch can not support failback-safe standby. Because the patch doesn't wait at FlushBuffer which is called by autovacuum. So, if user want to do transaction early temporarily, user need to change the synchronous_transfer value and reload postgresql.conf. Regards, ------- Sawada Masahiko
synchronous_transfer_v11.patch
Description: Binary data
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers