Фантомное чтение
Транзакция дважды выполняет один и тот же запрос по диапазону и получает разное число строк — потому что другая транзакция успела выполнить INSERT подходящих строк.
От неповторяющегося чтения (когда меняется та же строка) отличается тем, что появляются НОВЫЕ строки. Предотвращается Snapshot Isolation и Serializable. Стандарт SQL определяет фантом как аномалию, отделяющую «Repeatable Read» от «Serializable». «Repeatable Read» в Postgres на деле реализует Snapshot Isolation (фантомов при чтении нет, но write-skew возможен). MySQL InnoDB использует gap-блокировки, чтобы предотвращать фантомы и в Repeatable Read.