InnoDB combines two mechanisms. MVCC lets plain SELECTs read a consistent snapshot without locking, so readers never block writers. Locks protect writes: UPDATE// take row locks, and InnoDB also uses (row + the gap before it) to stop phantoms under REPEATABLE READ.
