MVCC細節太多,我直接備忘一下總結:sql
MVCC就是經過事務的ID與行數據的版本(修改事務的ID)進行比較(經過redo log能夠回溯版本)得出哪些版本的行數據可見和不可見而實現的事務隔離事務
可重複讀,查詢只認可在事務啓動前就已經提交完成的數據
讀提交,查詢只認可在語句啓動前就已經提交完成的數據
本身版本更新的總可見(版本=事務/語句)
其餘版本未提交的不可見it
版本已經提交,可是是在當前版本以後建立的不可見
版本已經提交,可是在當前版本開始前提交的可見(雖然都提交,可是建立視圖的點不一樣)io
更新操做中的讀,只能是當前讀,已經提交完成的最新版本,或者遇到行鎖阻塞sql語句
一、start transaction 開始事務的語句事務開啓點是在不是這句,而是第一個執行sql語句的地方
二、start transaction with consistent snapshot 開始事務的語句事務開啓點在這這句總結
start transaction 和 start transaction with consistent snapshot都是以每條語句的執行建立視圖數據