Jonas Oreland <jonaso@google.com> writes:
how about also adding a mode = 'auto' which currently can be == transaction, but in future could be extended to based on statistics flip actual modes back and forth ?
Hm. I like the idea that user could set parallel_mode=auto, and then the code would do a best-effort to replicate in parallel in the best way possible. And only if that turns out to not be sufficient, can the user read up on the more detailed options and try to configure them better manually. So as you say, "auto" could work like "transactional" in the first version, since it should be safe in the sense that it is always correct. And then we could refine it with some statistics. For example, we can monitor retries/transaction, and if it becomes > 0.05 or whatever, we go to "groupcommit" mode for a while. Or if we see a lot (say >10%) of DDL or MyISAM. I guess "auto" should be mutually exclusive with "groupcommit", "transactional", and "waiting". While "domain" is kind of orthogonal, and not safe to enable automatically. Thanks for the suggestion, I will keep it in mind and hopefully implement it. Probably even the two heuristics mentioned above could be implemented easily. - Kristian.