Re: Configuring synchronous replication - Mailing list pgsql-hackers
From | Simon Riggs |
---|---|
Subject | Re: Configuring synchronous replication |
Date | |
Msg-id | 1284728180.1733.4486.camel@ebony Whole thread Raw |
In response to | Re: Configuring synchronous replication (Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>) |
Responses |
Re: Configuring synchronous replication
|
List | pgsql-hackers |
On Fri, 2010-09-17 at 13:41 +0300, Heikki Linnakangas wrote: > On 17/09/10 12:49, Simon Riggs wrote: > > Fujii has long talked about 4 levels of service also. Why change? I had > > thought that part was pretty much agreed between all of us. > > Now you lost me. I agree that we need 4 levels of service (at least > ultimately, not necessarily in the first phase). OK, good. > > Without performance tests to demonstrate "why", these do sound hard to > > understand. But we should note that DRBD offers recv ("B") and fsync > > ("C") as separate options. And Oracle implements all 3 of recv, fsync > > and apply. Neither of them describe those options so simply and easily > > as the way we are proposing with a 4 valued enum (with async as the > > fourth option). > > > > If we have only one option for sync_rep = 'on' which of recv | fsync | > > apply would it implement? You don't mention that. Which do you choose? > > You would choose between recv, fsync and apply in the slave, with a GUC. So you would have both registration on the master and parameter settings on the standby? I doubt you mean that, so possibly need more explanation there for me to understand what you mean and also why you would do that. > > I no longer seek to persuade by words alone. The existence of my patch > > means that I think that only measurements and tests will show why I have > > been saying these things. We need performance tests. > > I don't expect any meaningful differences in terms of performance > between any of the discussed options. The big question right now is... This is the critical point. Politely, I would observe that *You* do not think there is a meaningful difference. *I* do, and evidence suggests that both Oracle and DRBD think so too. So we differ on what the "big question" is here. It's sounding to me that if we don't know these things, then we're quite a long way from committing something. This is basic research. > what > features we provide and how they're configured. Performance will depend > primarily on the mode you use, and secondarily on the implementation of > the mode. It would be completely premature to do performance testing yet > IMHO. If a patch is "ready" then we should be able to performance test it *before* we commit it. From what you say it sounds like Fujii's patch might yet require substantial tuning, so it might even be the case that my patch is closer in terms of readiness to commit. Whatever the case, we have two patches and I can't see any benefit in avoiding performance tests. > >> Putting all of that together. I think Fujii-san's standby.conf is pretty > >> close. > > > >> What it needs is the additional GUC for transaction-level control. > > > > The difference between the patches is not a simple matter of a GUC. > > > > My proposal allows a single standby to provide efficient replies to > > multiple requested durability levels all at the same time. With > > efficient use of network resources. ISTM that because the other patch > > cannot provide that you'd like to persuade us that we don't need that, > > ever. You won't sell me on that point, cos I can see lots of uses for > > it. > > Simon, how the replies are sent is an implementation detail I haven't > given much thought yet. It seems clear we've thought about different details around these topics. Now I understand your work on latches, I see it is an important contribution and I very much respect that. IMHO, each of us has seen something important that the other has not. > The reason we delved into that discussion > earlier was that you seemed to contradict yourself with the claims that > you don't need to send more than one reply per transaction, and that the > standby doesn't need to know the synchronization level. Other than that > the curiosity about that contradiction, it doesn't seem like a very > interesting detail to me right now. It's not a question that drives the > rest of the design, but the other way round. There was no contradiction. You just didn't understand how it could be possible, so dismissed it. It's a detail, yes. Some are critical, some are not. (e.g. latches.) My view is that it is critical and drives the design. So I don't agree with you on "the other way around". > But FWIW, something like your proposal of sending 3 XLogRecPtrs in each > reply seems like a good approach. I'm not sure about using walwriter. I > can see that it helps with getting the 'recv' and 'replay' > acknowledgments out faster, but > I still have the scars from starting > bgwriter during recovery. I am happy to apologise for those problems. I was concentrating on HS at the time, not on that aspect. You sorted out those problems for me and I thank you for that. With that in mind, I will remove the aspect of my patch that relate to starting wal writer. Small amount of code only. That means we will effectively disable recv mode for now, but I definitely want to be able to put it back later. -- Simon Riggs www.2ndQuadrant.comPostgreSQL Development, 24x7 Support, Training and Services
pgsql-hackers by date: