Robert Hodges <[email protected]> writes: > Hi Kristian, > > On Sep 23, 2010, at 11:50 PM PDT, Kristian Nielsen wrote: > > > Robert Hodges <[email protected]> writes:
> Right, rollback must be written at the end for transactions that do not > commit, but I read that Drizzle already does that (in one special case). > > You also need to write some kind of "server restart" event, so slave knows > to > rollback any not committed transactions after master crashed and comes > back > up. > > > At this point the binlog *does* look pretty much like a DBMS log, doesn't it? Yes! It would be really nice to be able to use the storage engine log also for the replication stream. Having multiple logs requires 2-phase commit to be able to recover reliably after crash and is quite expensive. But it seems quite tricky to achive single log in a general way that supports both the storage engine plugin interface and the replication plugin interface. > One consequence, then, of design #2 is that fast and robust plugin > implementations will be more complex, hence fewer. You'll either have to > demultiplex interleaved transaction fragments as others have described or > maintain a cache of connections that apply transactions in parallel. Either > way you have to deal with a number of special cases. > > Personally I think fast and readily parallelizable should win over a bit of > complexity in implementation. However, there is a real trade-off that runs > deeper than a bit of light buffering to iron things out. I think it should be possible to make a filter on the slave side that reads the complex interleaved log, and presents a nicely buffered and serialised log to clients that want to avoid the complexity. I mean, if you have to do the buffering anyway, it shouldn't be any harder to do it on the slave end than on the master, should it? - Kristian. _______________________________________________ Mailing list: https://launchpad.net/~drizzle-discuss Post to : [email protected] Unsubscribe : https://launchpad.net/~drizzle-discuss More help : https://help.launchpad.net/ListHelp

