spring事務(wù):
成都創(chuàng)新互聯(lián)公司成立與2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元市北做網(wǎng)站,已為上家服務(wù),為市北各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
什么是事務(wù):
事務(wù)邏輯上的一組操作,組成這組操作的各個(gè)邏輯單元,要么一起成功,要么一起失敗.
事務(wù)特性(4種):
- 原子性 (atomicity):強(qiáng)調(diào)事務(wù)的不可分割.
- 一致性 (consistency):事務(wù)的執(zhí)行的前后數(shù)據(jù)的完整性保持一致.
- 隔離性 (isolation):一個(gè)事務(wù)執(zhí)行的過程中,不應(yīng)該受到其他事務(wù)的干擾
- 持久性(durability) :事務(wù)一旦結(jié)束,數(shù)據(jù)就持久到數(shù)據(jù)庫(kù)
解決讀問題: 設(shè)置事務(wù)隔離級(jí)別(5種)
- DEFAULT 這是一個(gè)PlatfromTransactionManager默認(rèn)的隔離級(jí)別,使用數(shù)據(jù)庫(kù)默認(rèn)的事務(wù)隔離級(jí)別.
- 未提交讀(read uncommited) :臟讀,不可重復(fù)讀,虛讀都有可能發(fā)生
- 已提交讀 (read commited):避免臟讀。但是不可重復(fù)讀和虛讀有可能發(fā)生
- 可重復(fù)讀 (repeatable read) :避免臟讀和不可重復(fù)讀.但是虛讀有可能發(fā)生.
- 串行化的 (serializable) :避免以上所有讀問題.
MySQL 默認(rèn):可重復(fù)讀
Oracle 默認(rèn):讀已提交
事務(wù)隔離級(jí)別定義一個(gè)事務(wù)可能受其他事務(wù)并發(fā)活動(dòng)的影響程度。另一個(gè)考慮事務(wù)隔離級(jí)別的角度,是把它想象為事務(wù)對(duì)于它處理的數(shù)據(jù)的自私程度。
事務(wù)的隔離要解決的問題有3個(gè):
- 1,臟讀,即一個(gè)事務(wù)讀到另一個(gè)事務(wù)還沒有提交的數(shù)據(jù)。如果另一個(gè)事務(wù)失敗了,回滾了,那么第一個(gè)事務(wù)讀到的數(shù)據(jù)就是無效的數(shù)據(jù)。這就是臟讀。
- 2,不可重復(fù)讀,不可重復(fù)讀發(fā)生在一個(gè)事務(wù)里兩次查詢同一個(gè)數(shù)據(jù),發(fā)現(xiàn)查詢結(jié)果不一樣。這是因?yàn)樵谠撌聞?wù)的兩次查詢之間,有另一個(gè)事務(wù)更新了該數(shù)據(jù)。
- 3,幻讀,幻讀和不可重復(fù)讀比較類似。當(dāng)一個(gè)事務(wù)t1,第一次查詢了一些行,第二次又查詢了一些行,發(fā)現(xiàn)兩次查詢出來的行個(gè)數(shù)不一樣,或者多了一些行,或者少了一些行,好像出現(xiàn)了幻覺一樣。這是因?yàn)樵趦纱尾樵冎g,有另一事務(wù)更新了符合第一個(gè)事務(wù)查詢條件的行。
對(duì)比不可重復(fù)讀和幻讀,就可以很好的理解它們的區(qū)別。不可重復(fù)讀針對(duì)的是一行或者說一個(gè)數(shù)據(jù),而幻讀針對(duì)的是多行數(shù)據(jù)。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)創(chuàng)新互聯(lián)的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
本文名稱:Spring中的事務(wù)隔離級(jí)別的介紹
文章起源:
http://weahome.cn/article/jshpdc.html