neverend的日志

          不記錄,終將被遺忘。 一萬年太久,只爭朝夕。 他們用數字構建了整個世界。

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            62 Posts :: 1 Stories :: 17 Comments :: 0 Trackbacks

          數據庫中的事務是可以并發執行的,由此帶來四種并發問題:

          一、丟失更新 update lost

          1.回滾丟失 事務A修改X, 事務B修改X, 事務B回滾,事務A提交。結果:事務A的修改丟失了

          2.覆蓋丟失 并發的事務A和A'執行同樣的任務, A讀取X, B讀取X, A將X+1寫回,A'將X+1寫回。結果:X應為X+2,實際卻為X+1

          二、臟讀取 dirty read

          事務A修改數據X(此時A沒有commit),事務B讀取X,事務A回滾。 結果 : 事務B讀取的X不準確

          三、不可重復讀 Non-Repeatable Read

          事務A讀取數據X ,事務B修改數據X ,然后事務A再讀該數據,結果:事務A兩次讀取的數據不一致。

          四、幻想讀 Phantom Read 讀取的數據集未改變,但是條件數據集改變,造成事務A兩次讀取的數據不一致。

          解決方案:

          Sql標準隔離級別

          Dirty Read

          NonRepeatable Read

          Phantom Read

          Read uncommitted

          Possible

          Possible

          Possible

          Read committed

          Not possible

          Possible

          Possible

          Repeatable read

          Not possible

          Not possible

          Possible

          Serializable

          Not possible

          Not possible

          Not possible

          Serializable 全序列化 提供嚴格的事務隔離。它要求事務序列化執行,事務只能一個接著一個地執行,但不能并發執行。如果僅僅通過“行級鎖”是無法實現事務序列化的,必須通過其他機制保證新插入的數據不會被剛執行查詢操作的事務訪問到。

              Repeatable Read 可重復讀取 禁止不可重復讀取和臟讀取,但是有時可能出現幻影數據。這可以通過“共享讀鎖”和“排他寫鎖”實現。讀取數據的事務將會禁止寫事務(但允許讀事務),寫事務則禁止任何其他事務。

              Read Committed 授權讀取 允許不可重復讀取,但不允許臟讀取。這可以通過“瞬間共享讀鎖”和“排他寫鎖”實現。讀取數據的事務允許其他事務繼續訪問該行數據,但是未提交的寫事務將會禁止其他事務訪問該行。

              Read Uncommitted 未授權讀取 允許臟讀取,但不允許更新丟失。如果一個事務已經開始寫數據,則另外一個數據則不允許同時進行寫操作,但允許其他事務讀此行數據。該隔離級別可以通過“排他寫鎖”實現。

          隔離級別的實現原理:

          ………………

          其他相關知識

          事務定義:是指作為單個邏輯工作單元執行的一系列操作。要么全部執行,要么全部不執行。

          事務四種屬性: ACID 原子性、一致性、隔離性和持久性

          A : 要么全都執行,要么全都不執行

          C: 所有的數據都保持一致狀態 賬戶A轉出100$給賬戶B , 保證賬戶A -100$,賬戶B +100$

          I: 由并發事務所作的修改必須與任何其它并發事務所作的修改隔離。數據查看可串行。

          D:事務完成之后,它對于系統的影響是永久性的。該修改即使出現致命的系統故障也將一直保持。

          參考資料:

          http://blog.csdn.net/yongyuana01/archive/2009/02/25/3936482.aspx

          http://epub.itpub.net/3/4.htm

          http://baike.baidu.com/view/1298364.html?fromTaglist

          閱讀全文
          類別:技術天地 查看評論
          posted on 2010-09-29 10:55 neverend 閱讀(226) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 长乐市| 乌什县| 津市市| 新乡市| 商河县| 洪泽县| 岢岚县| 鹤山市| 石城县| 北流市| 潞西市| 锡林浩特市| 静安区| 双鸭山市| 揭阳市| 都江堰市| 平塘县| 巫溪县| 松溪县| 蒙自县| 白银市| 抚顺县| 定南县| 静安区| 共和县| 大英县| 遂川县| 循化| 富民县| 庆城县| 绩溪县| 肃北| 德清县| 岐山县| 抚顺市| 平果县| 南部县| 个旧市| 波密县| 阜平县| 广宗县|