溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MySQL中MVCC有哪些用法

發(fā)布時(shí)間:2020-06-05 09:54:27 來源:PHP中文網(wǎng) 閱讀:217 作者:三月 欄目:MySQL數(shù)據(jù)庫

本文主要給大家簡單講講MySQL中MVCC有哪些用法,相關(guān)專業(yè)術(shù)語大家可以上網(wǎng)查查或者找一些相關(guān)書籍補(bǔ)充一下,這里就不涉獵了,我們就直奔主題吧,希望MySQL中MVCC有哪些用法這篇文章可以給大家?guī)硪恍?shí)際幫助。

MVCC(多版本并發(fā)控制)

作用:很多情況下可以避免加鎖操作,降低開銷。

InnoDB下的MVCC

通過在每行記錄后面保存兩個(gè)隱藏的列來實(shí)現(xiàn),行的創(chuàng)建時(shí)間、行的過期時(shí)間(刪除時(shí)間)。這里的時(shí)間指的是系統(tǒng)版本號(hào),每開始一個(gè)新的事物,系統(tǒng)版本號(hào)都會(huì)自增。事物開始時(shí)刻的系統(tǒng)版本號(hào)會(huì)作為事物的版本號(hào),用來和查詢到的每行記錄的版本號(hào)進(jìn)行比較。

REPEATABLE READ隔離級(jí)別下MVCC的具體操作

SELECT

InnoDB 只查找版本早于當(dāng)前事物版本的數(shù)據(jù)行(行的系統(tǒng)版本號(hào) <= 事物的系統(tǒng)版本號(hào)),這樣可以確保事物讀取的行,要么是在事物開始前已經(jīng)存在的,要么是事物自身插入或者修改過的。(也就是和其它事物是隔離的)

行的刪除版本要么未定義,要么大于當(dāng)前事物版本號(hào)。這樣可以確保事物讀取到的行,在事物開始之前未被刪除。

符合上面兩個(gè)條件的記錄才能返回做完查詢結(jié)果。

INSERT

InnoDB 為新插入的每一行保存當(dāng)前系統(tǒng)版本號(hào)作為行版本號(hào)。

UPDATE

InnoDB 為插入一行新記錄,保存當(dāng)前系統(tǒng)版本號(hào)作為行版本號(hào),同時(shí)保存當(dāng)前系統(tǒng)版本號(hào)到原來的行作為行刪除標(biāo)識(shí)。

DELETE

InnoDB 為刪除的每一行保存當(dāng)前系統(tǒng)版本號(hào)作為刪除標(biāo)識(shí)。

MySQL中MVCC有哪些用法就先給大家講到這里,對于其它相關(guān)問題大家想要了解的可以持續(xù)關(guān)注我們的行業(yè)資訊。我們的板塊內(nèi)容每天都會(huì)捕捉一些行業(yè)新聞及專業(yè)知識(shí)分享給大家的。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI