悲觀鎖樂觀鎖定義 關于mySql中樂觀鎖與讀已提交(事務隔離級別)的搭配使用問題!求大神帶飛?
關于mySql中樂觀鎖與讀已提交(事務隔離級別)的搭配使用問題!求大神帶飛?在read uncommitted級別,事務中的更改(即使未提交)對其他事務也是可見的。事務可以讀取未提交的數(shù)據(jù),這也可以稱
關于mySql中樂觀鎖與讀已提交(事務隔離級別)的搭配使用問題!求大神帶飛?
在read uncommitted級別,事務中的更改(即使未提交)對其他事務也是可見的。事務可以讀取未提交的數(shù)據(jù),這也可以稱為臟讀。這個水平實際上會導致很多問題。就性能而言,uncommitted read并不比其他級別好多少,但它缺乏其他級別的優(yōu)點,除非它確實是必要的,而且通常不會在實踐中使用。
MySQL有一個多版本控制mvcc,可以看作是行級鎖的一個變種,但是在很多情況下避免了鎖,所以成本更低。Mvcc實際上是樂觀并發(fā)控制,它是通過在每行記錄后面保存兩個隱藏列來實現(xiàn)的。一個是創(chuàng)建時間,另一個是刪除時間。當然,實際存儲不是時間值,而是版本號。
Mvcc僅在可重復讀取和讀取提交級別工作,其他隔離級別與Mvcc不兼容,因為讀取未提交總是讀取最新數(shù)據(jù),而不是與當前事務版本匹配的數(shù)據(jù)行。
綜上所述,樂觀鎖可以與read submitted結(jié)合使用
mvcc現(xiàn)在已經(jīng)在主流數(shù)據(jù)庫中使用。使用RR隔離級別后,將不會出現(xiàn)虛讀。
根據(jù)不同的材料,RR是199X的ANSI SQL標準,但真正的數(shù)據(jù)庫不一定符合標準(事實上,最好沒有虛讀)。