Транзакция (которая в контексте MySQL
предполагает InnoDB
) не должна блокировать всю таблицу.
INSERT
заблокирует отдельный ряд без блокировок пробела.
UPDATE
также не будет блокировать пробелы, если вы предоставите условие равенства или IN
для индексированного поля в предложении WHERE
.
Это означает, что при правильно проиндексированной таблице INSERTs
не будет блокировать друг друга, тогда как UPDATEs
будет блокировать друг друга только в том случае, если они влияют на одну и ту же строку.
UPDATE
, конечно, заблокирует отдельную строку, на которую он влияет, но, поскольку это последняя операция в вашей транзакции, блокировка будет снята сразу после ее совершения.
Фактически требуется сама блокировка, чтобы два одновременных обновления увеличивали число последовательно.