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

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

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

    csusky

    常用鏈接

    統(tǒng)計

    最新評論

    數(shù)據(jù)庫的事務 JDBC

    TRANSACTION_NONE:
      正式地講,TRANSACTION_NONE不是一個有效的事務級別。
      根據(jù)java.sql Connection API文件,這個級別表示事務是
      不被支持的,因此理論上說你不能使用TRANSACTION_NONE作
      為一個自變量賦給Connection.setTransactionIsolation()
      方法。事實上,雖然一些數(shù)據(jù)庫實施了這個事務級別,但是
      Oracle9i卻沒有實施。


     臟讀取(TRANSACTION_READ_UNCOMMITTE):
    (允許的操作       讀-讀  讀-寫 寫-讀     (臟數(shù)據(jù),不可重復讀,虛讀) )
       表示,這個事務級別
      允許讀取臟數(shù)據(jù),什么是臟數(shù)據(jù)?就是指還沒有提交的數(shù)據(jù).
      因為這個級別,是允許一個事務(A)讀取另一個事務(B)
      還沒有提交的數(shù)據(jù).一旦事務B發(fā)生異常退出.而修改了的數(shù)據(jù)
      卻還沒提交,或者新插入的數(shù)據(jù)和刪除了的數(shù)據(jù)都還沒有
      提交,導致事務A拿到了一些臟數(shù)據(jù),或者錯誤數(shù)據(jù);
      因此在這個事務級別里是會發(fā)生臟讀,重復讀,錯誤讀取;

     禁止臟讀(TRANSACTION_READ_COMMITTED):
    (允許的操作       讀-讀  讀-寫 (不可重復讀,虛讀))
      在這個級別中,事務A
      只能讀取一些提交的數(shù)據(jù),如事務B添加了一條記錄,但是
      如果事務B沒有提交,那么事務A是讀不到的,所以該事務級別,
      把臟讀給屏蔽掉了.---卻允許重復讀取,和錯誤讀取.

      什么是重復讀取呢?譬如,事務A讀取了一個數(shù)據(jù),這個數(shù)據(jù)
      的值為"helloworld",事務A準備利用這個數(shù)據(jù)來更新一下
      其他數(shù)據(jù),但這個時候事務B開始對這個數(shù)據(jù)進行修改,并且
      提交---"hello 無名氏",由于是已經(jīng)提交了,所以事務A是可以
      看到這個數(shù)據(jù)的,當事務A在沒提交事務之前,它想看下數(shù)據(jù)
      是否正確,這個時候它發(fā)現(xiàn),新讀出的數(shù)據(jù)已經(jīng)和原來的數(shù)據(jù)
      不一樣了(這就是重復讀取);




     允許重復讀取(TRANSACTION_REPEATABLE_READ):
    (允許的操作       讀-讀  讀-寫(僅允許插入,不允許刪除和修改)(虛讀))
      在這個級別中,
      是禁止了臟讀,和取消了不可重復讀取,但是沒有禁止錯誤讀取;
      這個級別的事務比較嚴格,當一個事務A在讀取一個值的時候
      是不允許另一個事務對該值進行修改的;
      為了允許重復讀取,可以選用該級別,因為TRANSACTION_READ_
      COMMITED這個事務級別,是允許重復讀取提交的數(shù)據(jù)的,如果
      事務A在讀取一個數(shù)值的時候,值為"Hello World!",但這個時
      候事務B對"Hello World"值進行修改了,改為"Hello EveryOne"
      然后提交,當事務A再次去讀取這個值的時候,去發(fā)現(xiàn)原來讀到
      的值改變了,變成了"Hello EveryOne",為了防止出現(xiàn)這種情況
      可以禁止重復提交,目的是為了重復讀取不會出錯!那么這個
      時候就可以選擇
    TRANSACTION_REPEATABLE_READ這個級別,
      這個級別就是用來禁止重復提交的.
    (實際上是加了行鎖,鎖定了選中的數(shù)據(jù),不允許修改,但是允許插入新的數(shù)據(jù))
      雖然這個時候是禁止了重復提交,但卻可以添加刪除,
      比如事務A,作了個查詢語句"select * from 無名氏 "; 這個時候是允許事務B做這樣的操作的:
      "insert into 無名氏 values(2,'aaa')"; 這個時候,
      事務A再次做讀取操作的時候,卻發(fā)現(xiàn)數(shù)據(jù)莫名其妙的
      多了一條,這就是所謂的---幻影讀取;




     禁止幻讀(TRANSACTION_SERIALIZABLE):
     事務的最高級別(串行化  操作)事務級別最高,所耗費的性能也越多.
      禁止幻讀禁止了臟讀,禁止了重復提交和幻讀.
      也就是當事務A在按條件查詢的時候,事務A一旦沒有提
      交,任何事務都不能對事務A的資源進行操作--- 保證
      事務A的操作真正的原子性!


     注意:在Oracle中只支持兩種級別:

      TRANSACTION_READ_COMMITTED(默認的級別)(只有提交后
         才可以讀取)而每一個終端進行自己的DML操作 都自動開啟了一個事務

      TRANSACTION_SERIALIZABLE(竄行化操作)

    posted on 2008-03-05 09:34 曉宇 閱讀(325) 評論(0)  編輯  收藏 所屬分類: JAVA基礎(chǔ)

    主站蜘蛛池模板: 九九视频高清视频免费观看 | 99在线视频免费| 亚洲精品无码你懂的网站| 亚洲av永久无码| 成人亚洲综合天堂| 免费夜色污私人影院网站| 亚洲区不卡顿区在线观看| 国产福利在线观看永久免费| 久久亚洲精品无码观看不卡| 大地资源中文在线观看免费版| 亚洲色无码专区在线观看| 黄网站色视频免费在线观看的a站最新 | 8090在线观看免费观看| 亚洲邪恶天堂影院在线观看| 最近中文字幕完整免费视频ww | 深夜国产福利99亚洲视频| 无套内谢孕妇毛片免费看看| 亚洲人成伊人成综合网久久久| a级成人免费毛片完整版| 久久亚洲私人国产精品| 卡1卡2卡3卡4卡5免费视频| 狼人大香伊蕉国产WWW亚洲| 国产亚洲AV夜间福利香蕉149| 久久99精品视免费看| 亚洲人成毛片线播放| 国产在线播放免费| 国产免费AV片在线观看播放| 亚洲性天天干天天摸| 噼里啪啦电影在线观看免费高清 | 精品无码国产污污污免费网站国产| 日本亚洲视频在线| 国产免费久久精品99re丫y| 男性gay黄免费网站| 亚洲AV成人精品网站在线播放| 国产在线观看片a免费观看| 粉色视频免费入口| 亚洲国语精品自产拍在线观看| 在线免费一区二区| a级毛片免费在线观看| 亚洲色偷偷综合亚洲AV伊人蜜桃| 色久悠悠婷婷综合在线亚洲|