四種事務(wù)隔離級(jí)別:
未提交讀:一個(gè)事務(wù)可以讀任何已提交或未提交的數(shù)據(jù)。這可以通過“讀操作不需
要請(qǐng)求任何鎖”來實(shí)現(xiàn)姚垃。
已提交讀:一個(gè)事務(wù)可以讀任何已提交的數(shù)據(jù)赌躺。對(duì)于同一個(gè)對(duì)象的重復(fù)讀可能導(dǎo)致
讀到不同版本的數(shù)據(jù)匿值。實(shí)現(xiàn)方式是孽糖,讀數(shù)據(jù)前必須首先獲得一個(gè)讀操作鎖泥技,一旦數(shù)
據(jù)讀取之后該鎖被立即釋放伦连。
可重復(fù)讀:一個(gè)事務(wù)只能讀取一個(gè)已提交數(shù)據(jù)的一個(gè)版本酵使;一旦該事務(wù)讀取了一個(gè)
對(duì)象,那么对省,它將只能讀取該對(duì)象的同一個(gè)版本蝗拿。實(shí)現(xiàn)方式是,事務(wù)在請(qǐng)求讀數(shù)據(jù)
之前必須獲得一個(gè)鎖蒿涎,并且保持該鎖直到事務(wù)結(jié)束哀托。
可串行化:保證完全的可串行化。
三種異常:
1同仆、臟讀:臟讀就是指當(dāng)一個(gè)事務(wù)正在訪問數(shù)據(jù)萤捆,并且對(duì)數(shù)據(jù)進(jìn)行了修改,而這種修改還沒有提交到數(shù)據(jù)庫中俗批,這時(shí),另外一個(gè)事務(wù)也訪問這個(gè)數(shù)據(jù)市怎,然后使用了這個(gè)數(shù)據(jù)岁忘。
2、不可重復(fù)讀:是指在一個(gè)事務(wù)內(nèi)区匠,多次讀同一數(shù)據(jù)干像。在這個(gè)事務(wù)還沒有結(jié)束時(shí),另外一個(gè)事務(wù)也訪問該同一數(shù)據(jù)驰弄。那么麻汰,在第一個(gè)事務(wù)中的兩次讀數(shù)據(jù)之間,由于第二個(gè)事務(wù)的修改戚篙,那么第一個(gè)事務(wù)兩次讀到的的數(shù)據(jù)可能是不一樣的五鲫。這樣就發(fā)生了在一個(gè)事務(wù)內(nèi)兩次讀到的數(shù)據(jù)是不一樣的,因此稱為是不可重復(fù)讀岔擂。
3位喂、幻讀浪耘。乍一看可重復(fù)讀似乎保證了完全的可串行化,但是塑崖,其實(shí)并不是這樣七冲。在早期的 R 系統(tǒng)中發(fā)生了一個(gè)“幽靈問題”。在幽靈問題中规婆,一個(gè)事務(wù)使用同樣的謂詞多次訪問了同一個(gè)關(guān)系澜躺,但是,最近的訪問卻得到了最初訪問時(shí)沒有發(fā)現(xiàn)的新的“幽靈元組”抒蚜。原因在于苗踪,元組級(jí)的兩段鎖并不能阻止往表中插入元組。表級(jí)別的兩段鎖可以防止幽靈問題削锰,但是通铲,當(dāng)事務(wù)通過索引訪問表中的幾個(gè)元組時(shí),表級(jí)別的兩段鎖是被限制的器贩。