Re: Issues with Quorum Commit
От | Markus Wanner |
---|---|
Тема | Re: Issues with Quorum Commit |
Дата | |
Msg-id | 4CAECDC1.4060004@bluegap.ch обсуждение исходный текст |
Ответ на | Re: Issues with Quorum Commit (Simon Riggs <simon@2ndQuadrant.com>) |
Ответы |
Re: Issues with Quorum Commit
|
Список | pgsql-hackers |
Simon, On 10/08/2010 12:25 AM, Simon Riggs wrote: > Asking for k > 1 does *not* mean those servers are time synchronised. Yes, it's technically impossible to create a fully synchronized cluster (on the basis of shared-nothing nodes we are aiming for, that is). There always is some kind of "lag" on either side. Maybe the use case for a no-lag cluster doesn't exist, because it's technically not feasible. > In a bad case, those 3 acknowledgements might happen say 5 seconds apart > on the worst and best of the 3 servers. So the first standby to receive > the data could have applied the changes ~4.8 seconds prior to the 3rd > standby. There is still a chance of reading stale data on one standby, > but reading fresh data on another server. In most cases the time window > is small, but still exists. Well, the transaction isn't committed on the master, so one could argue it shouldn't matter. The guarantee just needs to be one way: as soon as confirmed committed to the client, all k standbies need to have it committed, too. (At least for the "apply" replication level). > So standbys are eventually consistent whether or not the master relies > on them to provide an acknowledgement. The only place where you can > guarantee non-stale data is on the master. That's formulated a bit too strong. With "apply" replication level, you should be able to rely on the guarantee that a committed transaction is visible on at least k standbies. Maybe in advance of the commit on the master, but I wouldn't call that "stale" data. Given the current proposals, the master is the one that's "lagging" the most, compared to the k standbies. > High values of k reduce the possibility of data loss, whereas expected > cluster availability is reduced as N - k gets smaller. Exactly. One addendum: a timeout increases availability at the cost of increased danger of data loss and higher complexity. Don't use it, just increase (N - k) instead. Regards Markus Wanner
В списке pgsql-hackers по дате отправления: