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

MVCC

MVCC細節太多,我直接備忘一下總結:

MVCC就是通過事務的ID與行數據的版本(修改事務的ID)進行比較(通過redo log可以回溯版本)得出哪些版本的行數據可見和不可見而實現的事務隔離

一致性讀

可重複讀,查詢只承認在事務啓動前就已經提交完成的數據
讀提交,查詢只承認在語句啓動前就已經提交完成的數據
自己版本更新的總可見(版本=事務/語句)
其他版本未提交的不可見

版本已經提交,但是是在當前版本之後創建的不可見
版本已經提交,但是在當前版本開始前提交的可見(雖然都提交,但是創建視圖的點不同)

更新

更新操作中的讀,只能是當前讀,已經提交完成的最新版本,或者遇到行鎖阻塞

開啓事務

對於可重複讀

1、start transaction 開始事務的語句事務開啓點是在不是這句,而是第一個執行sql語句的地方
2、start transaction with consistent snapshot 開始事務的語句事務開啓點在這這句

對於讀提交

start transaction 和 start transaction with consistent snapshot都是以每條語句的執行創建視圖

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章