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