According to the SQL Standard, Repeatable Read should prevent fuzzy reads and dirty reads, while Serializable should also prevent phantom reads.
According to the MySQL documentation:
By default, InnoDB operates in REPEATABLE READ transaction isolation level. In this case, InnoDB uses next-key locks for searches and index scans, which prevents phantom rows (see Section 14.2.2.5, “Avoiding the Phantom Problem Using Next-Key Locking”).
So if Repeatable Read can prevent phantom reads too, what does Serializable offers in return?
Is it that Serializable protects against write skew or read skew and Repeatable Read does not?