hibernate事務(wù)與并發(fā)問題處理

hibernate事務(wù)與并發(fā)問題處理

ID:33246597

大?。?80.25 KB

頁數(shù):11頁

時間:2019-02-22

hibernate事務(wù)與并發(fā)問題處理_第1頁
hibernate事務(wù)與并發(fā)問題處理_第2頁
hibernate事務(wù)與并發(fā)問題處理_第3頁
hibernate事務(wù)與并發(fā)問題處理_第4頁
hibernate事務(wù)與并發(fā)問題處理_第5頁
資源描述:

《hibernate事務(wù)與并發(fā)問題處理》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、網(wǎng)絡(luò)地址:http://www.cnblogs.com/otomedaybreak/archive/2012/01/27/2330008.htmlhttp://developer.51cto.com/art/201202/314694.htm主題:Hibernate事務(wù)與并發(fā)問題處理內(nèi)容部分Hibernate事務(wù)與并發(fā)問題處理(樂觀鎖與悲觀鎖)一、數(shù)據(jù)庫事務(wù)的定義  數(shù)據(jù)庫事務(wù)(DatabaseTransaction),是指作為單個邏輯工作單元執(zhí)行的一系列操作。事務(wù)處理可以確保除非事務(wù)性單元內(nèi)的所有操作都成功完成,否則不會永久更新面向數(shù)據(jù)的資源。通過將一組相關(guān)操作組合為

2、一個要么全部成功要么全部失敗的單元,可以簡化錯誤恢復(fù)并使應(yīng)用程序更加可靠。一個邏輯工作單元要成為事務(wù),必須滿足所謂的ACID(原子性、一致性、隔離性和持久性)屬性。?  1.原子性(atomic),事務(wù)必須是原子工作單元;對于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全都不執(zhí)行  2.一致性(consistent),事務(wù)在完成時,必須使所有的數(shù)據(jù)都保持一致狀態(tài)?! ?.隔離性(insulation),由并發(fā)事務(wù)所作的修改必須與任何其它并發(fā)事務(wù)所作的修改隔離?! ?.持久性(Duration),事務(wù)完成之后,它對于系統(tǒng)的影響是永久性的。二、數(shù)據(jù)庫事務(wù)并發(fā)可能帶來的問題?  如果沒有鎖

3、定且多個用戶同時訪問一個數(shù)據(jù)庫,則當(dāng)他們的事務(wù)同時使用相同的數(shù)據(jù)時可能會發(fā)生問題。由于并發(fā)操作帶來的數(shù)據(jù)不一致性包括:丟失數(shù)據(jù)修改、讀”臟”數(shù)據(jù)(臟讀)、不可重復(fù)讀、產(chǎn)生幽靈數(shù)據(jù):假設(shè)數(shù)據(jù)庫中有如下一張表:  1.第一類丟失更新(lostupdate):在完全未隔離事務(wù)的情況下,兩個事物更新同一條數(shù)據(jù)資源,某一事物異常終止,回滾造成第一個完成的更新也同時丟失?! ≡赥1時刻開啟了事務(wù)1,T2時刻開啟了事務(wù)2,在T3時刻事務(wù)1從數(shù)據(jù)庫中取出了id="402881e535194b8f0135194b91310001"的數(shù)據(jù),T4時刻事務(wù)2取出了同一條數(shù)據(jù),T5時刻事務(wù)1將a

4、ge字段值更新為30,T6時刻事務(wù)2更新age為35并提交了數(shù)據(jù),但是T7事務(wù)1回滾了事務(wù)age最后的值依然為20,事務(wù)2的更新丟失了,這種情況就叫做"第一類丟失更新(lostupdate)"?! ?.臟讀(dirtyread):如果第二個事務(wù)查詢到第一個事務(wù)還未提交的更新數(shù)據(jù),形成臟讀。  在T1時刻開啟了事務(wù)1,T2時刻開啟了事務(wù)2,在T3時刻事務(wù)1從數(shù)據(jù)庫中取出了id="402881e535194b8f0135194b91310001"的數(shù)據(jù),在T5時刻事務(wù)1將age的值更新為30,但是事務(wù)還未提交,T6時刻事務(wù)2讀取同一條記錄,獲得age的值為30,但是事務(wù)1還

5、未提交,若在T7時刻事務(wù)1回滾了事務(wù)2的數(shù)據(jù)就是錯誤的數(shù)據(jù)(臟數(shù)據(jù)),這種情況叫做"臟讀(dirtyread)"?! ?.虛讀(phantomread):一個事務(wù)執(zhí)行兩次查詢,第二次結(jié)果集包含第一次中沒有或者某些行已被刪除,造成兩次結(jié)果不一致,只是另一個事務(wù)在這兩次查詢中間插入或者刪除了數(shù)據(jù)造成的。  在T1時刻開啟了事務(wù)1,T2時刻開啟了事務(wù)2,T3時刻事務(wù)1從數(shù)據(jù)庫中查詢所有記錄,記錄總共有一條,T4時刻事務(wù)2向數(shù)據(jù)庫中插入一條記錄,T6時刻事務(wù)2提交事務(wù)。T7事務(wù)1再次查詢數(shù)據(jù)數(shù)據(jù)時,記錄變成兩條了。這種情況是"虛讀(phantomread)"?! ?.不可重復(fù)讀

6、(unrepeatedread):一個事務(wù)兩次讀取同一行數(shù)據(jù),結(jié)果得到不同狀態(tài)結(jié)果,如中間正好另一個事務(wù)更新了該數(shù)據(jù),兩次結(jié)果相異,不可信任?! ≡赥1時刻開啟了事務(wù)1,T2時刻開啟了事務(wù)2,在T3時刻事務(wù)1從數(shù)據(jù)庫中取出了id="402881e535194b8f0135194b91310001"的數(shù)據(jù),此時age=20,T4時刻事務(wù)2查詢同一條數(shù)據(jù),T5事務(wù)2更新數(shù)據(jù)age=30,T6時刻事務(wù)2提交事務(wù),T7事務(wù)1查詢同一條數(shù)據(jù),發(fā)現(xiàn)數(shù)據(jù)與第一次不一致。這種情況就是"不可重復(fù)讀(unrepeatedread)"。  5.第二類丟失更新(secondlostupdate

7、s):是不可重復(fù)讀的特殊情況,如果兩個事務(wù)都讀取同一行,然后兩個都進行寫操作,并提交,第一個事務(wù)所做的改變就會丟失?! ≡赥1時刻開啟了事務(wù)1,T2時刻開啟了事務(wù)2,T3時刻事務(wù)1更新數(shù)據(jù)age=25,T5時刻事務(wù)2更新數(shù)據(jù)age=30,T6時刻提交事務(wù),T7時刻事務(wù)2提交事務(wù),把事務(wù)1的更新覆蓋了。這種情況就是"第二類丟失更新(secondlostupdates)"。?三、數(shù)據(jù)庫事務(wù)隔離級別為了解決數(shù)據(jù)庫事務(wù)并發(fā)運行時的各種問題數(shù)據(jù)庫系統(tǒng)提供四種事務(wù)隔離級別:1.Serializable串行化2.RepeatableRead可重復(fù)讀3.

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。