MVCC
Motivation
- MVCC eliminates locking so that read operations doesn't need to be block by write operations. 
- For example, a thread executing UPDATE statement should not block SELECT statement by another thread. 
Four isolation levels
Read uncomitted

Read committed

Repeatable read

Serializable
- Every read and write operation are serialized. 
Three read exceptions
Dirty read

Non-repeatable read

Phantom read
- Within MySQL, it uses next-key lock to implement MVCC, so it does not have the problem for phantom read. 

Relationship between isolation levels and read exceptions

Read view
- Only exist in Read committed and Repeatable read mode. 
Read committed
- When a transaction (originally started but uncommitted when the target transaction starts, namely if transaction_id < curr_transaction_id) is committed, a new readview will be generated. 

Repeatable read
- Once the readview is generated, it won't be updated. 

TODO
- index and schema design 
- Problems of mySQL: https://time.geekbang.org/column/article/267741 
- Isolation level: https://time.geekbang.org/column/article/12288 
Last updated
Was this helpful?