隨筆-95  評(píng)論-31  文章-10  trackbacks-0
          事物ACID特性

          A:atomicity 原子性
          C:consistency 一致性
          I:isolation 隔離性 多個(gè)事物可以獨(dú)立運(yùn)行,而不會(huì)彼此產(chǎn)生影響。也即可并發(fā)執(zhí)行
          D:durability 持久性

          并發(fā)事物:T1新增一條記錄,但是沒有commit,此時(shí)T2事物開始查詢,但結(jié)果并不包含T1新增記錄,只有T1執(zhí)行commit,此時(shí)T2事物再次查詢才能看到T1新增記錄

          事物鎖:T1事物修改一行記錄,但是沒有commit,此時(shí)T1對(duì)該行“加鎖”了,T2事物若試圖update該條記錄,必須等待T1提交commit釋放鎖后才能執(zhí)行。

          結(jié)論:讀程序不會(huì)阻塞讀程序、寫程序不會(huì)阻塞讀程序、只有在試圖對(duì)相同的行進(jìn)行修改時(shí),寫程序才會(huì)阻塞寫程序。

          聯(lián)想代碼中的service層、每個(gè)方法spring默認(rèn)開啟事物,可以并發(fā)執(zhí)行,只有兩個(gè)service方法中的dao方法同時(shí)修改一行記錄時(shí)候,這兩個(gè)方法就會(huì)阻塞等待其中一方釋放事物鎖,如果一方執(zhí)行很慢,另外一方就會(huì)阻塞等待。


          事物隔離級(jí)別:
          1、幻象讀取:T1讀取結(jié)果集,T2新增一條記錄滿足T1讀取的結(jié)果集,T1再次讀取結(jié)果集,此時(shí)看到了T2新增的一條記錄,這個(gè)新行就叫“幻象”
          2、不可重復(fù)讀:T1讀取一行記錄,T2修改了該條記錄,T1再次讀取這行記錄,發(fā)現(xiàn)結(jié)果不同了,這個(gè)現(xiàn)象就叫“不可重復(fù)讀”
          3、臟讀:T1更新一行記錄,但是沒有提交修改,此時(shí)T2讀取該行記錄,然后T1執(zhí)行回滾操作,取消剛才的修改,現(xiàn)在T2讀取的行就無效了稱之為“臟數(shù)據(jù)”也即臟讀。

          SQL標(biāo)準(zhǔn)定義以下幾種事物隔離級(jí)別
          1、READ UNCOMMITTED 幻象讀、不可重復(fù)讀、臟讀都允許
          2、READ COMMITTED 允許幻象讀、不可重復(fù)讀、但不允許臟讀
          3、REPEATABLE READ 允許幻象讀、但是不允許不可重復(fù)讀和臟讀
          4、SERIALIZABLE 幻影讀、不可重復(fù)讀和臟讀都不允許

          oracle默認(rèn)READ COMMITTED


          posted on 2014-07-17 14:06 朔望魔刃 閱讀(348) 評(píng)論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 莆田市| 黄大仙区| 商河县| 蓬莱市| 奎屯市| 鲁山县| 常宁市| 白朗县| 萨嘎县| 吴堡县| 礼泉县| 康马县| 武陟县| 新乡市| 循化| 平罗县| 申扎县| 武汉市| 苏州市| 色达县| 汤阴县| 马龙县| 泰州市| 醴陵市| 山丹县| 朝阳市| 长寿区| 贺兰县| 大化| 河曲县| 大丰市| 义乌市| 舒兰市| 福州市| 灌南县| 襄垣县| 黄大仙区| 宽城| 祁连县| 广东省| 乌拉特后旗|