針對MySQL的MVCC多版本併發控制的一些總結

MVCC

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都是以每條語句的執行建立視圖數據

相關文章
相關標籤/搜索