• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            數據庫中的-臟讀,幻讀,不可重復讀

            Posted on 2010-03-17 00:10 Prayer 閱讀(484) 評論(0)  編輯 收藏 引用 所屬分類: 數據庫,SQLDB2

            一.丟失更新
            當兩個或多個事務選擇同一行,然后基于最初選定的值更新該行時,會發生丟失更新問題。每個事務都不知道其它事務的存在。最后的更新將重寫由其它事務所做的更新,這將導致數據丟失。   

            e.g.事務A和事務B同時修改某行的值,

             1.事務A將數值改為1并提交

                   2.事務B將數值改為2并提交。

            這時數據的值為2,事務A所做的更新將會丟失。

             

            解決辦法:對行加鎖,只允許并發一個更新事務。

            二.未確認的相關性(臟讀)
              當第二個事務選擇其它事務正在更新的行時,會發生未確認的相關性問題。第二個事務正在讀取的數據還沒有確認并且可能由更新此行的事務所更改。

                  e.g.

                    1.Mary的原工資為1000, 財務人員將Mary的工資改為了8000(但未提交事務)         2.Mary讀取自己的工資 ,發現自己的工資變為了8000,歡天喜地!

                 3.而財務發現操作有誤,回滾了事務,Mary的工資又變為了1000

                  像這樣,Mary記取的工資數8000是一個臟數據。

             

             解決辦法:如果在第一個事務提交前,任何其他事務不可讀取其修改過的值,則可  以避免該問題。


            三.不一致的分析(非重復讀)
              當第二個事務多次訪問同一行而且每次讀取不同的數據時,會發生不一致的分析問題。不一致的分析與未確認的相關性類似,因為其它事務也是正在更改第二個事務正在讀取的數據。然而,在不一致的分析中,第二個事務讀取的數據是由已進行了更改的事務提交的。而且,不一致的分析涉及多次(兩次或更多)讀取同一行,而且每次信息都由其它事務更改;因而該行被非重復讀取。

                  在一個事務中前后兩次讀取的結果并不致,導致了不可重復讀。


            e.g.

            1.在事務1中,Mary 讀取了自己的工資為1000,操作并沒有完成

            2.在事務2中,這時財務人員修改了Mary的工資為2000,并提交了事務.

            3.在事務1中,Mary 再次讀取自己的工資時,工資變為了2000


            解決辦法:如果只有在修改事務完全提交之后才可以讀取數據,則可以避免該問題。


             四.幻像讀     

              當對某行執行插入或刪除操作,而該行屬于某個事務正在讀取的行的范圍時,會發生幻像讀問題。事務第一次讀的行范圍顯示出其中一行已不復存在于第二次讀或后續讀中,因為該行已被其它事務刪除。同樣,由于其它事務的插入操作,事務的第二次或后續讀顯示有一行已不存在于原始讀中。

               e.g. 目前工資為1000的員工有10人。

            1.事務1,讀取所有工資為1000的員工。

            2.這時事務2向employee表插入了一條員工記錄,工資也為1000

            3.事務1再次讀取所有工資為1000的員工 共讀取到了11條記錄,

             

            解決辦法:如果在操作事務完成數據處理之前,任何其他事務都不可以添加新數據,則可避免該問題


            本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/d8111/archive/2008/06/29/2595635.aspx

            亚洲欧美国产精品专区久久 | 国产精品热久久无码av| 久久久久免费精品国产| 久久亚洲天堂| 久久久久亚洲AV无码去区首| 精品久久久无码中文字幕| 成人午夜精品久久久久久久小说| 久久精品国产第一区二区三区| 欧美一区二区三区久久综合| 久久水蜜桃亚洲av无码精品麻豆| 亚洲精品乱码久久久久久蜜桃图片| 久久精品亚洲AV久久久无码| 亚洲av成人无码久久精品| 亚洲AV无码久久寂寞少妇| AV狠狠色丁香婷婷综合久久| 久久婷婷国产麻豆91天堂| 国内精品久久久久久久影视麻豆| 品成人欧美大片久久国产欧美... 品成人欧美大片久久国产欧美 | 午夜精品久久久久久99热| 欧美熟妇另类久久久久久不卡| 亚洲国产一成人久久精品| 精品久久久噜噜噜久久久 | 久久久久亚洲AV无码专区网站 | 亚洲午夜久久久| 亚洲午夜久久久影院| 国产亚洲欧美成人久久片| 久久无码精品一区二区三区| 久久精品国产乱子伦| 国产精品免费福利久久| 久久人妻少妇嫩草AV蜜桃| 亚洲午夜无码久久久久| 精品国产婷婷久久久| 亚洲精品无码久久千人斩| 99久久精品国产一区二区蜜芽| 欧美亚洲日本久久精品| 国产精品久久久久久久久免费| 九九久久精品无码专区| 国产亚洲精久久久久久无码| 久久精品国产亚洲5555| 久久久女人与动物群交毛片| 亚洲精品无码久久不卡|