微網(wǎng)站與微信的關(guān)系蘇州seo安嚴(yán)博客
一、臟讀
A事務(wù)讀取B事務(wù)尚未提交的數(shù)據(jù),此時(shí)如果B事務(wù)發(fā)生錯(cuò)誤并執(zhí)行回滾操作,那么A事務(wù)讀取到的數(shù)據(jù)就是臟數(shù)據(jù)。就好像原本的數(shù)據(jù)比較干凈、純粹,此時(shí)由于B事務(wù)更改了它,這個(gè)數(shù)據(jù)變得不再純粹。這個(gè)時(shí)候A事務(wù)立即讀取了這個(gè)臟數(shù)據(jù),但事務(wù)B良心發(fā)現(xiàn),又用回滾把數(shù)據(jù)恢復(fù)成原來干凈、純粹的樣子,而事務(wù)A卻什么都不知道,最終結(jié)果就是事務(wù)A讀取了此次的臟數(shù)據(jù),稱為臟讀。
二、不可重復(fù)讀
事務(wù)A在執(zhí)行讀取操作,由整個(gè)事務(wù)A比較大,前后讀取同一條數(shù)據(jù)需要經(jīng)歷很長的時(shí)間 。而在事務(wù)A第一次讀取數(shù)據(jù),比如此時(shí)讀取了小明的年齡為20歲,事務(wù)B執(zhí)行更改操作,將小明的年齡更改為30歲,此時(shí)事務(wù)A第二次讀取到小明的年齡時(shí),發(fā)現(xiàn)其年齡是30歲,和之前的數(shù)據(jù)不一樣了,也就是數(shù)據(jù)不重復(fù)了,系統(tǒng)不可以讀取到重復(fù)的數(shù)據(jù),成為不可重復(fù)讀。
三、幻讀
事務(wù)A在執(zhí)行讀取操作,需要兩次統(tǒng)計(jì)數(shù)據(jù)的總量,前一次查詢數(shù)據(jù)總量后,此時(shí)事務(wù)B執(zhí)行了新增數(shù)據(jù)的操作并提交后,這個(gè)時(shí)候事務(wù)A讀取的數(shù)據(jù)總量和之前統(tǒng)計(jì)的不一樣,就像產(chǎn)生了幻覺一樣,平白無故的多了幾條數(shù)據(jù),成為幻讀。
四、不可重復(fù)讀與幻讀的區(qū)別
(1) 不可重復(fù)讀是讀取了其他事務(wù)更改的數(shù)據(jù),針對update操作
解決:使用行級鎖,鎖定該行,事務(wù)A多次讀取操作完成后才釋放該鎖,這個(gè)時(shí)候才允許其他事務(wù)更改剛才的數(shù)據(jù)。
(2) 幻讀是讀取了其他事務(wù)新增的數(shù)據(jù),針對insert和delete操作
解決:使用表級鎖,鎖定整張表,事務(wù)A多次讀取數(shù)據(jù)總量之后才釋放該鎖,這個(gè)時(shí)候才允許其他事務(wù)新增數(shù)據(jù)。