Ключом к пониманию того, как работает современный механизм баз данных, такой как InnoDB, является Multi-Version Concurrency Control или MVCC. Именно так одновременные операции могут выполняться параллельно, а затем согласовываться в согласованное «представление» базы данных при полной фиксации.
Если вы когда-либо использовали Git, вы знаете, как вы можете иметь несколько обновлений для одной и той же базы, происходящих параллельно, но при условии, что все они могут слиться друг с другом, нет конфликта. База данных работает так же, где вы можете начать транзакцию, применить несколько операций и зафиксировать ее. Если они применяются без конфликта, фиксация успешна. Если возникла проблема, транзакция откатывается так, как будто ее никогда не было.
Эта способность одновременно манипулировать несколькими операциями - это то, что делает движок базы данных с поддержкой транзакций действительно мощным. Это важный компонент, необходимый для соответствия стандарту ACID .
MyISAM, оригинальный движок из MySQL 3.0, не имеет ни одной из этих функций и блокирует всю базу данных при любой операции INSERT
, чтобы избежать конфликта. Это работает так, как вы думали.
При создании базы данных в MySQL у вас есть выбор движка, но по умолчанию следует использовать InnoDB. На самом деле нет никакой причины использовать MyISAM, поскольку любые интересные функции этого движка (например, полнотекстовые индексы) были перенесены в InnoDB.