下載吧 - 綠色安全的游戲和軟件下載中心

          軟件下載吧

          當前位置:軟件下載吧 > 技術開發 > 數據庫 > PostgreSQL教程(九):事物隔離介紹

          PostgreSQL教程(九):事物隔離介紹

          時間:2024-02-13 10:22作者:下載吧人氣:19

          在SQL的標準中事物隔離級別分為以下四種:
              1. 讀未提交(Read uncommitted)
              2. 讀已提交(Read committed)
              3. 可重復讀(Repeatable read)
              4. 可串行化(Serializable)
              然而PostgreSQL在9.1之前的版本中只是實現了其中兩種,即讀已提交和可串行化,如果在實際應用中選擇了另外兩種,那么PostgreSQL將會自動向更嚴格的隔離級別調整。在PostgreSQL v9.1的版本中提供了三種實現方式,即在原有的基礎上增加了可重復讀。在這篇博客中我們將只是針對2)和4)進行說明和比較,因為在9.1中,3)和4)的差別也是非常小的。

           

            讀已提交 可串行化
          PostgreSQL缺省隔離級別
          其它事物未提交數據是否可見 不可見 不可見
          執行效率
          適用場景 簡單SQL邏輯,如果SQL語句中含有嵌套查詢,那么在多次SQL查詢中將極有可能獲得不同版本的數據。 復雜SQL邏輯,特別是帶有嵌套的查詢比較適用。
          SELECT查詢一致性時間點 從該SELECT查詢開始執行時,在此查詢執行期間,任何其它并發事物針對該查詢結果集的數據操作都將不會被本次查詢讀到,即本次查詢獲取的數據版本是與查詢開始執行時的數據版本相一致。 從該SELECT查詢所在事物開始時,在此查詢執行期間,任何其它并發事物針對該查詢結果集的數據操作都將不會被本次查詢讀到,即本次查詢獲取的數據版本是與查詢所在事物開始時的數據版本相一致。
          同事物內的數據操作是否可見 比如在同一個事物內存在update和select操作,即使當前事物尚未提交,update所作的修改,在當前事物后面的select中依然可見。 和讀已提交相同。
          同事物內多次相同的select所見的數據是否相同 不同,由于該級別select的一致性時間點是該查詢開始執行時,而多次查詢的時間點將肯定不相同,如果在第一次查詢開始到第二次查詢開始之間,其它的并發事物修改并提交或當前事物僅修改了查詢將要獲取的數據,那么這些數據操作的結果將會在第二個查詢中有所體現。 需要分兩步來說,對于同一事物內的修改如果發生在兩次查詢語句之間,那么第二個查詢將會看到這些修改的結果。然而對于其它并發事物的修改,將不會造成任何影響,即兩次select的結果是相同的。原因顯而易見,該隔離級別的select一致性時間點是與事物開始時相一致的。
          相同行數據的修改 如果此時兩個并發事物在修改同一行數據,先修改的事物將會給該行加行級鎖,另外一個事物將進入等待狀態,直到第一個事物操作該行結束。那么倘若第一個針對該行的修改操作最終被其事物回滾,第二個修改操作在結束等待后,將直接修改該數據。然而如果第一個操作是被正常提交的話,那么就需要進一步判斷該操作的類型,如果是刪除(delete)該行,第二個修改操作將直接被忽略。如果是update該行的記錄,第二個修改操作則需要重新評估該行是否依然符合之前定義的修改條件。 和讀已提交隔離級別的機制基本相同,只是在第一個修改操作提交后,第二個操作將不再區分之前的修改是delete還是update,而是直接并返回下面信息:Error: Can’t serialize access due to concurrent update. 這是因為一個可串行化的事務在可串行化事務開始之后不能更改或者鎖住被其他事務更改過的行。因此,當應用收到這樣的錯誤信息時,它應該退出當前的事務然后從頭開始重新進行整個事務。在應用程序中,也應該有必要的代碼來專門處理該類錯誤。

              最后需要說明的是,在絕大多數的情況下,讀已提交級別均可適用,而且該級別的并發效率更高。只有在比較特殊的情況下,才手工將當前的事物隔離級別調整為可串行化或可重復讀。

          標簽[db:關鍵字]

          相關下載

          查看所有評論+

          網友評論

          網友
          您的評論需要經過審核才能顯示

          熱門閱覽

          最新排行

          公眾號

          主站蜘蛛池模板: 日韩成人一区ftp在线播放| 精品国产AⅤ一区二区三区4区 | 国产午夜毛片一区二区三区| 国产一区二区三区免费观在线| 国产精品亚洲一区二区三区久久| 国产剧情国产精品一区| 日韩免费无码一区二区视频| 精品福利视频一区二区三区| 亚洲AV无码一区东京热久久 | 国产一区二区三区小说| 无码日韩精品一区二区免费暖暖| 国产成人精品久久一区二区三区av| 国内精品视频一区二区八戒| 少妇一夜三次一区二区| 午夜影院一区二区| 91福利一区二区| 精品国产a∨无码一区二区三区| 无码国产精品一区二区免费3p| 国产精品毛片VA一区二区三区| 日本一区二区不卡视频 | 精品人妻少妇一区二区三区不卡| 免费播放一区二区三区| 免费无码毛片一区二区APP| 色狠狠AV一区二区三区| 秋霞无码一区二区| 亚洲av日韩综合一区久热| 日本在线视频一区二区| 日韩一区二区三区电影在线观看| 乱码人妻一区二区三区| 日本在线视频一区二区三区| 国产一区二区三区露脸| 国产精品第一区第27页| 亚洲色婷婷一区二区三区| 99精品国产一区二区三区不卡 | 成人国内精品久久久久一区| 国产成人综合精品一区| 国模吧一区二区三区| 国产对白精品刺激一区二区| 亚洲AV成人一区二区三区观看| 精品日韩一区二区| 精品日韩在线视频一区二区三区 |