Wake WALSender to reduce data loss at failover for async commit.

WALSender now woken up after each background flush by WALwriter, avoiding
multi-second replication delay for an all-async commit workload.
Replication delay reduced from 7s with default settings to 200ms and often
much less, allowing significantly reduced data loss at failover.

Andres Freund and Simon Riggs
This commit is contained in:
Simon Riggs 2012-06-07 19:22:47 +01:00
parent b50991eedb
commit 2c8a4e9be2
1 changed files with 7 additions and 0 deletions

View File

@ -2271,6 +2271,13 @@ XLogBackgroundFlush(void)
END_CRIT_SECTION();
/*
* If we wrote something then we have something to send to standbys also,
* otherwise the replication delay become around 7s with just async commit.
*/
if (wrote_something)
WalSndWakeup();
return wrote_something;
}