Там async репликация и маленькая очередь, если в нее поставить долгий запрос, то она забивается, далее flow control pause и встает весь кластер. Мы же про flow control сейчас говорим?
Нет. Я неправильно выразился. Я говорил про то, что в случае master-master транзация коммитится только когда весь кворум ее прожует. Отчего простой insert работает дольше, чем в тупом master-slave режиме. Это даже без вставания раком всего кластера.
Перед окончанием commit галера формирует writeset и все. Все остальное вне коммита. Writeset поступает на другие ноды. Там происходит магия галеровой репликации.
When the client issues a COMMIT command (but before the actual commit has happened), all changes made to the database by the transaction and the primary keys of changed rows are collected into a writeset.
"Each node then certifies the replicated write-set against other write-sets in the applier queue. The write-set is then applied, if there are no conflicting locks. At this point, the transaction is considered committed"
ok на коммит приходит вместе с global transaction id, который получается _после_ сертификации writeset-а. Впрочем, это неважно, я мало что понимаю в потрошках БД.
Вот я недавно искал этот скрипт, но не нашел. Всем скриптам надо было с PK, а у меня неи его. Думал, что в скрипте от фейсбука будет магия, но сейчас посмотрел ограничения и понимаю, что он бы не помог. Поставил mysql 5.7 и сделал algorithm=inplace