<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-80  評論-117  文章-0  trackbacks-0

    一.什么是事務

    ?? ? 事務是應用程序中一系列嚴密的操作,所有操作必須成功完成,否則在每個操作中所作的所有更改都會被撤消。也就是事務具有原子性,一個事務中的一系列的操作要么全部成功,要么一個都不做。

    ?? 事務的結束有兩種,當事務中的所以步驟全部成功執行時,事務提交。如果其中一個步驟失敗,將發生回滾操作,撤消撤消之前到事務開始時的所以操作。

    二.事務的 ACID

    事務具有四個特征:原子性( Atomicity )、一致性( Consistency )、隔離性( Isolation )和持續性( Durability )。這四個特性簡稱為 ACID 特性。

    1 、原子性

    ??? 事務是數據庫的邏輯工作單位,事務中包含的各操作要么都做,要么都不做

    2 、一致性

    ????? 事務執行的結果必須是使數據庫從一個一致性狀態變到另一個一致性狀態。因此當數據庫只包含成功事務提交的結果時,就說數據庫處于一致性狀態。如果數據庫系統運行中發生故障,有些事務尚未完成就被迫中斷,這些未完成事務對數據庫所做的修改有一部分已寫入物理數據庫,這時數據庫就處于一種不正確的狀態,或者說是不一致的狀態。 ?

    3 、隔離性

    ??? 一個事務的執行不能其它事務干擾。即一個事務內部的操作及使用的數據對其它并發事務是隔離的,并發執行的各個事務之間不能互相干擾。

    4 、持續性

    ?? 也稱永久性,指一個事務一旦提交,它對數據庫中的數據的改變就應該是永久性的。接下來的其它操作或故障不應該對其執行結果有任何影響。

    ?

    ?

    二.事務的屬性

    一個事務的屬性控制了事務的使用范圍。 EJB 、 Spring 以及.net下的事務屬性都很類似的, 事務屬性有如下幾種:

    Required:
    如果在一個事務中調用,就把該方法加到此事務中來
    如果還沒有啟動事務,就啟動一個新事務

    RequiredNew:
    不管當前有沒有事務,都會啟動一個新事務,如果當前有事務,會被掛起直到方法結束。

    NotSupported:
    不能在事務中執行此方法。如果有事務,將會被掛起直到方法結束。

    Supports:
    如果當前有事務,此方法會加到當前事務,如果沒有,容器也不會啟動新事務。

    Mandatory:
    必須在事務中調用此方法,否則拋出異常。

    Never:
    必須不在事務中調用此方法,否則拋出異常。

    ?

    三.事務的回滾

    CMT 在以下兩中情況下,事務將回滾。第一,如果產生一個系統異常,容器將自動回滾該事務。第二,通過調用 EJBContext 接口 SetRollbackOnly 方法, Bean 方法通知容器回滾該事務。如果 Bean 拋出一個應用異常,事務將不會自動回滾,但可以調用 SetRollbackOnly 回滾。

    ?

    四.事務超時

    對于 EJB 中的容器管理事務,事務超時間隔是通過設置 default.properties 文件中 ransaction.timeout 屬性的值來確定的,該文件在 J2EE SDK 安裝目錄的 config 子目錄下。如下例將事務超時間隔設置為 5 秒鐘: transaction.timeout=5 ,這樣,當事務在 5 秒鐘內還沒有完成,容器將回滾該事務。

    J2EE SDK 安裝后,超時間隔的缺省值為 0 ,表示不計算超時,無論事務執行多長時間,除非異常出錯回滾,一直等待事務完成。

    只有使用容器管理事務的企業 Bean 才會受到 transaction.timeout 屬性值的影響。 Bean 管理的 JTA 事務使用 UserTransaction 接口的 setTransactionTimeout 方法來設置事務超時間隔。

    ?

    五.隔離級別

     事務不僅保證事務界限內的數據庫操作全部完成(或回滾)同時還隔離數據庫更新語句。隔離級別描述被修改的數據對其他事物的可見度。隔離級別的控制會跟具體的 DBMS 廠商不同而不同。

    ??? ? 隔離級別與并發性是互為矛盾的:隔離程度越高,數據庫的并發性越差;隔離程度越低,數據庫的并發性越好。

    通過一些現象,可以反映出隔離級別的效果。這些現象有:

    l???????? 更新丟失( lost update ):當系統允許兩個事務同時更新同一數據是,發生更新丟失。

    l???????? 臟讀( dirty read ):當一個事務讀取另一個事務尚未提交的修改時,產生臟讀。

    l???????? 非重復讀( nonrepeatable read ):事務多次讀取同一行中的數據卻得到不同數值時。例如:事務1讀取了一行數據,而事務2改變或刪除了那些行并提交了修改。如果事務1再次讀取了那一行,那么,事務1就得到了不同的數值(被更新或刪除)。

    l???????? 幻像讀( phantom read ):一行數據滿足搜索規則,卻在開始沒有被看到。例如:事務1讀取了一系列滿足搜索規則的行,而事務2插入或刪除了一個滿足事務1搜索規則的行。如果事務1再次執行查詢語句,就會得到不同的一系列行。

    ?

    SQL-99 標準定義了下列隔離級別:

    l???????? 未提交讀( read uncommitted )(隔離事務的最低級別,只能保證不讀取物理上損壞的數據)

    l???????? 已提交讀( read committed )(數據庫引擎 ? 的默認級別)當一個事務運行在這個隔離級別時, 一個 SELECT 查詢只能看到查詢開始之前提交的數據,而永遠 無法看到未提交的數據,或者是在查詢執行時其他并行的事務提交做的改變。

    l???????? 可重復讀( repeatable read ),不會臟讀和非重復讀,可能發生幻像讀

    l???????? 可串行化 serializable )(隔離事務的最高級別,事務之間完全隔離)


    ??????????????????????

    ANSI/ISO SQL 隔離級別

    隔離級別

    臟讀(DirtyRead

    不可重復的讀(Non-Repeatable Read

    ? 幻像 讀取(Phantom Read

    未提交讀 Read uncommitted

    可能

    可能

    可能

    已提交讀 Read committed

    不可能

    可能

    可能

    可重復讀(Repeatable read

    不可能

    不可能

    可能

    可串行化(Serializable

    不可能

    不可能

    不可能


    posted on 2006-03-16 10:34 南哥 閱讀(1653) 評論(2)  編輯  收藏 所屬分類: J2EE

    評論:
    # re: 事務學習筆記一(概念) 2006-03-17 14:29 | null
    沒看出非重復讀和幻像讀有什么區別!  回復  更多評論
      
    # re: 事務學習筆記一(概念) 2006-03-17 16:59 | magicdoom
    非重復讀是指 事務多次讀取同一行中的數據卻得到不同數值時
    幻像讀是指在一個事務的查詢范圍內,由于其他事務刪除了新的數據,事務第一次讀取的行的范圍顯示有一些行不再存在于第二次或后續讀取內容中。同樣,由于其他事務的插入操作,事務第二次或后續讀取的內容顯示有一些行并不存在于原始讀取內容中。
      回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产jizzjizz免费看jizz| 亚洲国产精品乱码一区二区| 大片免费观看92在线视频线视频| xvideos永久免费入口| 国产日韩成人亚洲丁香婷婷| 久久久免费的精品| 中国亚洲呦女专区| 精品亚洲一区二区三区在线播放| 亚洲国产精品日韩av不卡在线| 69免费视频大片| 亚洲精品宾馆在线精品酒店| 亚洲精品午夜无码专区| 最近中文字幕mv手机免费高清| 亚洲精彩视频在线观看| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 亚洲色丰满少妇高潮18p| 亚洲成a人片在线观看国产| 香蕉成人免费看片视频app下载| 国产亚洲精品无码成人| 韩国免费一级成人毛片| 精精国产www视频在线观看免费| 成人亚洲性情网站WWW在线观看| 免费观看又污又黄在线观看| 亚洲酒色1314狠狠做| 亚洲国产综合久久天堂| 美女被cao免费看在线看网站| 亚洲国产精品乱码在线观看97| 18禁成人网站免费观看| 男女作爱免费网站| 亚洲五月综合网色九月色| 亚洲Av无码精品色午夜| 亚洲国产午夜福利在线播放| 国产精品视频免费一区二区| 国产99精品一区二区三区免费| 国产亚洲美女精品久久久久狼| 国产免费无码AV片在线观看不卡| 亚洲AV无码精品无码麻豆| 亚洲国产精品综合久久网络| 成人在线视频免费| 一级做a爰全过程免费视频| gogo免费在线观看|