注意我們現(xiàn)在的隔離級別是讀未提交,即最低的隔離級別。這種級別下會出現(xiàn)臟讀,A事務修改了一行數(shù)據(jù),但在未提交的情況下,這一行數(shù)據(jù)被A事務以外的行為,簡稱為F,這個F可能是B事務,也或者是簡單的非事務類型的select,給讀取了,然后A事務進行了回滾,則F讀到的是臟數(shù)據(jù)。現(xiàn)在看來一切都很通暢。但是我有一點疑惑,我們知道,innodb下簡單的select都是快照讀(MVCC提供),那么上面F所做的應該也是快照讀,難道當A事務修改完那一行數(shù)據(jù)之后就立刻進行了快照?否則F怎么會讀到A事務對那一行修改完的那個版本呢?應該是F讀到A對那一行修改前的版本吧?多問一句,innodb只要在那一行數(shù)據(jù)的鎖被釋放之后就會進行快照?快照是如何被觸發(fā)的?
在innodb的讀未提交的隔離級別下,mvcc的行為?
30秒到達戰(zhàn)場
2018-07-17 14:06:37