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

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

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

    隨筆-159  評論-114  文章-7  trackbacks-0
    Atomic Consistent? Isolated? Durable

    An atomic database transaction is one which is guaranteed to complete successfully or not at all. If an error prevents a partially-performed transaction from proceeding to completion, it must be "backed out" to prevent the database being left in an inconsistent state.

    ACID?is?an?acronym?used?to?describe?the?properties?that?a?transaction?should?have?in?an?enterprise?environment.?A?transaction?should?be?Atomic,?and?its?results?should?be?Consistent,?Isolated,?and?Durable.?A?transaction?is?Atomic?if?it?either?completes?itself?or?is?completely?undone.?The?results?of?a?transaction?should?consistently?change?the?system?from?one?state?to?another,?be?isolated?or?independent?of?one?another,?and,?once?completed,?be?durable?or?permanent.

    什么是事務

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

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



    事務的ACID

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


    ????

    1、原子性

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

    2、一致性

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

    3、隔離性

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

    4、持續(xù)性

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

    事務的屬性

    ???

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


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

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

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

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

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

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


    三.事務的回滾

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

    五.隔離級別

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

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

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

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

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

    l???????? 非重復讀(nonrepeatable read):同一查詢在同一事務中多次進行,由于其他提交事務所做的修改或刪除,每次返回不同的結果集,此時發(fā)生非重復讀。

    l???????? 幻像讀(phantom read):同一查詢在同一事務中多次進行,由于其他提交事務所做的插入操作,每次返回不同的結果集,此時發(fā)生幻像讀。

    ?

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

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

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

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

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



    posted on 2006-03-28 23:30 北國狼人的BloG 閱讀(333) 評論(0)  編輯  收藏 所屬分類: 達內學習總結
    主站蜘蛛池模板: 亚洲国产精品无码专区在线观看 | 亚洲av无码精品网站| 日韩色日韩视频亚洲网站| 性色av免费观看| 亚洲人成色77777在线观看| 最近免费中文字幕视频高清在线看 | 中文字幕亚洲日韩无线码| 四虎成人精品国产永久免费无码| 日韩免费高清视频网站| 国产亚洲人成在线播放| 亚洲精品无码成人片在线观看 | 国产色爽免费视频| 狠狠综合亚洲综合亚洲色| 亚洲福利中文字幕在线网址| 无码人妻一区二区三区免费视频 | 亚洲一区免费在线观看| 毛片基地免费视频a| 亚洲av无码专区在线电影| 无码专区一va亚洲v专区在线| 特级毛片aaaa免费观看| 亚洲精品狼友在线播放| 99国产精品免费视频观看| 亚洲国产av一区二区三区丶| 成人免费看吃奶视频网站| 精品一区二区三区无码免费直播| 国产a v无码专区亚洲av| 成全动漫视频在线观看免费高清版下载 | 久久精品国产亚洲AV忘忧草18| 青苹果乐园免费高清在线| 亚洲AV成人精品一区二区三区| 亚洲不卡AV影片在线播放| 野花香在线视频免费观看大全| 亚洲第一二三四区| 精品少妇人妻AV免费久久洗澡| 成人免费网站视频www| 久久精品国产亚洲AV电影| 天天摸夜夜摸成人免费视频| 一级一级一片免费高清| 亚洲国产精品张柏芝在线观看 | 免费看美女让人桶尿口| aa毛片免费全部播放完整|