mysql樂觀鎖解決并發(fā) mysql默認(rèn)是樂觀鎖?
mysql默認(rèn)是樂觀鎖?樂觀鎖,悲觀鎖,這兩個(gè)概念你需要了解,以便更好地理解。樂觀鎖:與悲觀鎖相對(duì)應(yīng),不是數(shù)據(jù)庫(kù)本身帶來的,需要自己實(shí)現(xiàn)。悲觀鎖:與樂觀鎖相對(duì)應(yīng),由數(shù)據(jù)庫(kù)自身實(shí)現(xiàn)。要使用,我們可以直接
mysql默認(rèn)是樂觀鎖?
樂觀鎖,悲觀鎖,這兩個(gè)概念你需要了解,以便更好地理解。樂觀鎖:與悲觀鎖相對(duì)應(yīng),不是數(shù)據(jù)庫(kù)本身帶來的,需要自己實(shí)現(xiàn)。悲觀鎖:與樂觀鎖相對(duì)應(yīng),由數(shù)據(jù)庫(kù)自身實(shí)現(xiàn)。要使用,我們可以直接調(diào)用與數(shù)據(jù)庫(kù)相關(guān)的語句。悲觀鎖涉及到另外兩個(gè)鎖的概念:共享鎖和獨(dú)占鎖。只有理解和實(shí)踐,才能更好地理解這些具體的東西。我希望我的回答能對(duì)您有所幫助
在read uncommitted級(jí)別,事務(wù)中的更改對(duì)其他事務(wù)是可見的,即使它們沒有提交。事務(wù)可以讀取未提交的數(shù)據(jù),這也可以稱為臟讀。這個(gè)水平實(shí)際上會(huì)導(dǎo)致很多問題。就性能而言,uncommitted read并不比其他級(jí)別好多少,但它缺乏其他級(jí)別的優(yōu)點(diǎn),除非它確實(shí)是必要的,而且通常不會(huì)在實(shí)踐中使用。
MySQL有一個(gè)多版本控制mvcc,可以看作是行級(jí)鎖的一個(gè)變種,但是在很多情況下避免了鎖,所以成本更低。Mvcc實(shí)際上是樂觀并發(fā)控制,它是通過在每行記錄后面保存兩個(gè)隱藏列來實(shí)現(xiàn)的。一個(gè)是創(chuàng)建時(shí)間,另一個(gè)是刪除時(shí)間。當(dāng)然,實(shí)際存儲(chǔ)不是時(shí)間值,而是版本號(hào)。
Mvcc僅在可重復(fù)讀取和讀取提交級(jí)別工作,其他隔離級(jí)別與Mvcc不兼容,因?yàn)樽x取未提交總是讀取最新數(shù)據(jù),而不是與當(dāng)前事務(wù)版本匹配的數(shù)據(jù)行。
綜上所述,樂觀鎖可以與read submitted一起使用