舉例說(shuō)明四種事務(wù)隔離級(jí)別有何差別

馬克-to-win:比如說(shuō):窗口1是READ-UNCOMMITTED級(jí)別,而窗口2是REPEATABLE-READ級(jí)別。(如何設(shè)置隔離級(jí)別,請(qǐng)參見(jiàn)“缺省隔離級(jí)別是怎么回事?如何改變?”)這樣,我窗口1讀數(shù)據(jù)時(shí),能看到其他窗口update以后還沒(méi)有commited的數(shù)據(jù)。換句話說(shuō),你update以后,即使沒(méi)有提交,我都能看見(jiàn)。而因?yàn)槟愕募?jí)別是REPEATABLE-READ。這個(gè)隔離級(jí)別比較高,換句話說(shuō)就是隔離度高。我更新完數(shù)據(jù)后,你看不到。馬克-to-win:你要想看到我更新的數(shù)據(jù),必須得我提交以后,而且你也得提交完成你的transaction(事務(wù))。咱們倆都?jí)m埃落定了,你才能看到我更新的數(shù)據(jù)。因?yàn)檫@樣做其實(shí)就怕我回滾或者你回滾。如果我的窗口1的隔離級(jí)別剛才不是設(shè)成READ_UNCOMMITTED,而是設(shè)成READ_COMMITTED,則我的窗口1只能看到你commited以后的數(shù)據(jù)。你不commit的話,當(dāng)我select * from table時(shí),只能看到以前的數(shù)據(jù),你update以后而未提交的變化數(shù)據(jù),我一點(diǎn)兒都看不見(jiàn)。同樣,如果我的窗口1的隔離級(jí)別剛才不是設(shè)成 READ_UNCOMMITTED,而是設(shè)成SERIERLIZED的話,這是隔離級(jí)別最高的一種隔離,可以說(shuō)隔離得最徹底。我窗口1開(kāi)始 Transaction(事務(wù))以后,即使我隨隨便便select * from table一下,你的Transaction之后都無(wú)法update。但如果說(shuō)是你先進(jìn)的transaction,你update之后,在你沒(méi)提交之前,我的普通的select * from table都不能執(zhí)行。馬克- to-win:馬克 java社區(qū):防盜版實(shí)名手機(jī)尾號(hào): 73203。