Если все 100 соединений находятся на одном узле Galera:
Одно будет успешным;остальные не удастся выполнить на INSERT
.
. Если 100 подключений распределены между вашими 3 (?) узлами Galera:
На узле, где происходит успешная вставка, другие не смогут работатьINSERT
.
На других узлах сбой произойдет на COMMIT
.
Если вы работаете с autocommit=ON
, то существует неявное COMMIT
в INSERT
, поэтому сбои будут казаться одинаковыми.Тем не менее, могут быть некоторые подробности состояния, отличающиеся.
Удаленные действия (вставка на этот узел, но на каком-то другом узле уже есть зафиксированная строка) являются оптимистичными, поэтому их нужно поймать на COMMIT
.
В действительности, очень трудно получить 100 соединений, чтобы сделать INSERT
«одновременно».Я сомневаюсь, что вы могли бы даже 10, чтобы это произошло.На нескольких этапах операции мьютексы удаляются, тем самым кратко однопоточную работу на узле.И издержки на запуск соединения, вероятно, больше, чем тривиальные INSERT
.
Кроме того, имейте в виду, что все соединения, вероятно, проходят через одну сеть Ethernet.Это также имеет тенденцию предотвращать столько одновременности, сколько вы ожидали.
Гарантируется ли, что один из INSERTs
будет успешным?Я думаю так.Иначе, что хорошего в двигателе базы данных?Производственные системы стучатся в InnoDB около 16 лет.Galera была в производстве, возможно, 6 лет.Потерянный INSERT
будет критической ошибкой, независимо от того, как она произошла.