隨筆-95  評論-31  文章-10  trackbacks-0
          事物ACID特性

          A:atomicity 原子性
          C:consistency 一致性
          I:isolation 隔離性 多個事物可以獨立運行,而不會彼此產生影響。也即可并發執行
          D:durability 持久性

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

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

          結論:讀程序不會阻塞讀程序、寫程序不會阻塞讀程序、只有在試圖對相同的行進行修改時,寫程序才會阻塞寫程序。

          聯想代碼中的service層、每個方法spring默認開啟事物,可以并發執行,只有兩個service方法中的dao方法同時修改一行記錄時候,這兩個方法就會阻塞等待其中一方釋放事物鎖,如果一方執行很慢,另外一方就會阻塞等待。


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

          SQL標準定義以下幾種事物隔離級別
          1、READ UNCOMMITTED 幻象讀、不可重復讀、臟讀都允許
          2、READ COMMITTED 允許幻象讀、不可重復讀、但不允許臟讀
          3、REPEATABLE READ 允許幻象讀、但是不允許不可重復讀和臟讀
          4、SERIALIZABLE 幻影讀、不可重復讀和臟讀都不允許

          oracle默認READ COMMITTED


          posted on 2014-07-17 14:06 朔望魔刃 閱讀(347) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 余干县| 册亨县| 博乐市| 同仁县| 遂溪县| 甘洛县| 习水县| 南开区| 屏东市| 姚安县| 武冈市| 吉林市| 花莲县| 利辛县| 彰化市| 安多县| 新干县| 榆中县| 山东省| 五指山市| 罗城| 惠安县| 郓城县| 扎囊县| 花莲县| 锦州市| 南康市| 油尖旺区| 额尔古纳市| 德格县| 曲松县| 云龙县| 浦县| 华宁县| 潞西市| 汝阳县| 黑山县| 大兴区| 阳东县| 平阳县| 印江|