Согласно стандарту SQL, повторное чтение должно предотвращать нечеткие чтения и грязные чтения, в то время как Serializable также должен предотвращать фантомные чтения.Какова фактическая разница между реализациями MySQL InnoDB повторного чтения и Serializable
Согласно MySQL documentation:
По умолчанию InnoDB работает в REPEATABLE READ изоляции транзакций уровне. В этом случае InnoDB использует следующие блокировки для поиска и индексирует сканирование, которое предотвращает появление фантомных строк (см. Раздел 14.2.2.5, «Избегание « Призрачная проблема с использованием блокировки с помощью следующего ключа »).
Так что если повторное чтение может предотвратить фантомное чтение, что предлагает Serializable в обмен?
Разве что Serializable защищает от записи перекоса или чтения перекоса и повторного чтения нет?
Это правильно (конечно). Мой комментарий будет заключаться в том, что RR и RC используют MVCC, где операторы SELECT могут извлекать ранние, но правильные поколения каждой строки. Поэтому с точки зрения параллелизма обычно не рекомендуется использовать сериализуемое. –