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

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

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

    列宿乃施于上榮兮 日月才經(jīng)于柍桭

    ………… 白駒過隙 歲月如斯 夢縈回繞 心靈之聲
    posts - 57, comments - 8, trackbacks - 0, articles - 41
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    概要

      數(shù)據(jù)庫隔離級別是關(guān)系型數(shù)據(jù)庫保障事務(wù)生命周期過程中幾個層次的數(shù)據(jù)安全策略。
      隔離級別越高,越能保證數(shù)據(jù)的完整性和一致性,但是對并發(fā)性能的影響也越大;而隔離級別越低,事務(wù)并發(fā)性越強,但同時會出現(xiàn)與業(yè)務(wù)情況相背的數(shù)據(jù)情況。如果系統(tǒng)壓力偏大而業(yè)務(wù)數(shù)據(jù)能支持較強的容錯情況,我們可以選擇相對較低的事務(wù)隔離級別,在個別應(yīng)用場景可以由應(yīng)用程序采用悲觀鎖或樂觀鎖來控制低級別事務(wù)隔離級別引出的數(shù)據(jù)安全情況;而數(shù)據(jù)一致性需求較強的應(yīng)用場景,如果系統(tǒng)壓力并不大且在一個可控的壓力范圍之內(nèi),我們可以選擇較高的事務(wù)隔離級別支持,甚至可以選擇最高的串行執(zhí)行的隔離級別Serializable。


    事務(wù)完整性

      事務(wù)完整性可以用ACID特性來衡量事務(wù)的質(zhì)量,違反事務(wù)完整性的問題有3類:臟讀、不可重復(fù)讀和幻像讀。

      ACID:原子性(atomicity),一致性(consistency),隔離性(isolation),持續(xù)性(durability)
      原子性:事務(wù)是原子的,要不全部完成,要不全部失敗。
      一致性:保證數(shù)據(jù)庫的一致性,事務(wù)執(zhí)行之前是一致的,執(zhí)行之后也是一致的。
      隔離性:每個事務(wù)必須和其他事務(wù)產(chǎn)生的結(jié)果隔離開來。
      持續(xù)性:事務(wù)的持續(xù)性指不管系統(tǒng)發(fā)生了什么故障,事務(wù)處理的結(jié)果都是永久的,數(shù)據(jù)庫產(chǎn)品必須保證,即使存放數(shù)據(jù)的驅(qū)動器融化了,也能將數(shù)據(jù)庫恢復(fù)到驅(qū)動器融化之前,即最后一個事務(wù)提交的瞬間狀態(tài)。

      事務(wù)缺陷:臟讀、不可重復(fù)讀、幻像讀
      1)臟讀
      讀取了其它事務(wù)未提交的數(shù)據(jù)。
      2)不可重復(fù)讀
      對于單行數(shù)據(jù)來說。事務(wù)A兩次讀取的數(shù)據(jù)不一致,因為看到的是事務(wù)B提交前后的數(shù)據(jù),自然不一致。
      3)幻像讀
      對于多行數(shù)據(jù)來說。事務(wù)A兩次讀取的行數(shù)不一致,因為在其過程中正巧事務(wù)B修改并提交了滿足事務(wù)A查詢條件的記錄。
      

    幾種隔離級別

      以JDBC中Connection的事務(wù)隔離級別定義來說明:
      1)Read Uncommitted(TRANSACTION_READ_UNCOMMITTED)
      事務(wù)A可以讀取到事務(wù)B未提交的數(shù)據(jù),如果事務(wù)B發(fā)生異常回滾,事務(wù)A讀取到的將是臟數(shù)據(jù)。此事務(wù)隔離級別的應(yīng)用場景中將出現(xiàn)臟讀、不可重復(fù)讀和幻像讀這幾種情況。

      2)Read Committed(TRANSACTION_READ_COMMITTED)
      事務(wù)A可以讀取到事務(wù)B已經(jīng)提交的數(shù)據(jù),不可讀取到事務(wù)B未提交的數(shù)據(jù),避免了臟讀,但沒有避免不可重復(fù)讀和幻像讀。

      3)Repeatable Read(TRANSACTION_REPEATABLE_READ)
      可以回避臟讀、不可重復(fù)讀的情況,但無法避免幻像讀。

      4)Serializable(TRANSACTION_SERIALIZABLE)
      防止所有的事務(wù)缺陷,適用于絕對的事務(wù)完整性的要求比性能更為重要的情況,銀行帳務(wù)系統(tǒng)、高度競爭性的銷售數(shù)據(jù)庫,等等,可以選擇使用Serializable。


    事務(wù)隔離級別查看及修改

      1)DB2
      默認:Read Committed
      查看:
      修改:a.DB2SET DB2_SQLROUTINE_PREPOPTS=RR|RS|CS|UR 
                        b.db2 change isolation to UR
                        c.SELECT * FROM tablename WITH UR
            (RR-Serializable、RS-Repeatable Read、CS-Read Committed、UR-Read Uncommitted)

      2)Oracle
      默認:Read Committed
      查看:
      修改:set transaction isolation level serializable(Oracle只有read committed 和 serializable)

      3)Sybase
      默認:Read Committed
      查看:select @@isolation
      修改:set transaction isolation level 0
      (level 3-Serializable、level 2-Repeatable Read、level 1-Read Committed、level 0-Read Uncommitted)

      4)Sql Server
      默認:Read Committed
      查看:
      修改:set transaction isolation level read uncommitted
     
      5)Mysql
      默認:Repeatable Read
      查看:select @@tx_isolation;
      修改:set transaction isolation level read uncommitted;

    主站蜘蛛池模板: 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 国产乱子伦精品免费女| 久久免费区一区二区三波多野| 亚洲第一综合天堂另类专| 2022年亚洲午夜一区二区福利| 中文字幕不卡亚洲| 国产v片免费播放| 成年女人男人免费视频播放| 99视频在线免费看| 中国国产高清免费av片| 免费无码国产在线观国内自拍中文字幕 | 亚洲另类春色校园小说| 亚洲第一视频网站| 亚洲精品无码成人AAA片| 亚洲精品成人区在线观看| 永久黄网站色视频免费直播 | 亚洲精品456人成在线| 久久久久亚洲AV无码观看| 国产亚洲精品一品区99热| 亚洲综合色视频在线观看| 免费大片黄手机在线观看| 国产片免费在线观看| 日韩免费毛片视频| 国产精品美女自在线观看免费 | 亚洲av永久无码天堂网| 在线aⅴ亚洲中文字幕| 亚洲www在线观看| 久久亚洲精品国产亚洲老地址| 亚洲一本之道高清乱码| 亚洲人成电影网站| 亚洲深深色噜噜狠狠网站| 亚洲一区电影在线观看| 亚洲另类自拍丝袜第1页| 亚洲乱码在线卡一卡二卡新区| 在线亚洲午夜片AV大片| 亚洲综合av一区二区三区| 亚洲中文字幕日本无线码| 亚洲AV日韩综合一区尤物| 亚洲乱码av中文一区二区| 麻豆亚洲AV成人无码久久精品| 亚洲av日韩综合一区二区三区|