Just ran into this link, which seems to describe how MVCC can sometimes not be enough.
http://ronaldbradford.com/blog/understanding-innodb-mvcc-200...
http://ronaldbradford.com/blog/understanding-innodb-mvcc-200...
http://dev.mysql.com/doc/refman/5.7/en/innodb-transaction-mo...
> InnoDB does locking on the row level and runs queries as nonlocking consistent reads by default, in the style of Oracle. The lock information in InnoDB is stored so space-efficiently that lock escalation is not needed: Typically, several users are permitted to lock every row in InnoDB tables, or any random subset of the rows, without causing InnoDB memory exhaustion.