Я использую версию mysql 8.0 и разбираюсь в понятиях уровней изоляции rdbms.Делая небольшие примеры в MySQL, в чем разница между неповторяемым чтением и фантомным чтением.В большинстве ответов в Google теоретически объясняется, что повторяющийся уровень изоляции при чтении предотвращает проблему неповторяемого чтения, т. Е. Любая транзакция, которая обнаружила какие-либо значения в другой транзакции, не изменила бы состояние 1-й транзакции, но другая транзакция может вставить новые значения.чтение может происходить в режиме повторяемого чтения) Сериализуемый уровень изоляции предотвращает проблему фантомного чтения. Вот мой подход и очень запутался.
Предположим, что весь уровень транзакций на уровне сеанса повторяется и все таблицы создаются в движке INNODB.
сеанс: -1 стартовая транзакция;выберите * из demo.employee;// предположим, что у него есть три записи с идентификаторами 1,2 и 3
Сессия 2: запуск транзакции select * from demo.employee // То же значение, которое было в сеансе1
Сессия: -1 обновлениенекоторое значение с id = 1, и теперь при запуске запроса на выборку мы можем видеть обновленное значение
сеанс: 2 снова запускает запрос на выборку и может видеть только предыдущее значение (до этого момента я могу понятьконцепция повторяемого чтения) Теперь сессия 2 вставляет новую строку, мой запрос на вставку начинается, ждет, пока первая транзакция не завершится.как повторяемое чтение также мешает фантомному чтению
Может ли кто-нибудь помочь мне понять это.