樓主的結(jié)論具有誤導性,不是mvcc不能解決,而是定義和需求要求當前讀要幻讀.
我總結(jié)下:
(select from ) - mvcc可以解決幻讀,被稱為快照讀
(select for update , update where) -- 兩種實現(xiàn),一種是實現(xiàn)避免幻讀,但是要拋錯,告知調(diào)用方你改的數(shù)據(jù)已經(jīng)不是你開啟事務時的版本,實現(xiàn)行級別樂觀鎖機制; 另一種實現(xiàn)是有幻讀,所有匹配到數(shù)據(jù)都能夠修改成功,如果業(yè)務方有需要版本判斷,業(yè)務方自己去實現(xiàn)字段級別樂觀鎖機制. 目前的實現(xiàn)是第二種, 故被稱為當前讀. 這種實現(xiàn)下會出現(xiàn)幻讀. 不是mvcc不能解決,而是需求和定義要求出現(xiàn)幻讀.
