日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

事务的隔离界别

發布時間:2023/12/1 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 事务的隔离界别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  事務的ACID特性:

  1、Atomicity原子性 ?事務操作的不可分割性,要么全部執行,要么回滾。

  2、Consistency一致性 ?數據庫在事務處理前后處于的一致性狀態。如銀行轉賬,兩個賬戶轉賬前的狀態和轉賬后的狀態必須一致。

  3、Isolation隔離性 同一時刻執行多個事務,一個事務的執行不能被其他事務干擾。

  4、Durability持久性 持久性指一旦成功執行,在系統中產生的所有變化將是永久的。

  事務的隔離級別是事務并發控制的整體解決方案,是綜合利用各種類型的鎖機制解決并發問題的整體解決方案

  首先了解一下常見的并發問題:

  1、臟讀:一個事務可以讀到另一個事務未提交的數據,違背了事務的隔離性原則。

  2、不可重復讀:同一個事務內,兩條相同的查詢語句的查詢結果不一致。

  3、幻讀:屏蔽了對其他用戶修改數據的查詢,等到提交時發現出錯了。

  這三個并發問題的出現都是在前一問題的基礎之上發生的,

  比如,臟讀問題可以這樣理解,客戶A從數據庫讀取數據行到內存并修改,但是還沒有提交,此時客戶B也要讀取這一行,但是這個讀取是在內存中讀取的客戶A未提交的數據

     ?不可重復讀是在解決了臟讀的情況下,不再讀取未提交的數據,而是從數據庫中直接讀取已經提交的數據,但是這樣會在同一事務中產生一個問題,就是兩次查詢的結果可能不一致,比如第一次查詢在客戶端提交前,第二次查詢在客戶端提交后,結果這兩次查詢結果不一致。

     幻讀問題是在解決了不可重復讀問題的前提下,即同一事務中重復查詢的結果一致,但是這又會產生新的問題,比如第一次查詢是否存在某個用戶,假設不存在,此時客戶B插入這個用戶,此時這個事務的隔離界別是可重復讀,那么再次查詢這個用戶肯定還是不存在,但是此時數據庫中已經存在了這個用戶,客戶A再次插入的話必然會產生duplicate錯誤。

  為了解決這些并發問題,SQL定義了四種隔離級別:

  read uncommitted(讀取未提交的數據) ? ?可能存在 ?以上三種問題

  read commited 讀取提交的數據 ? ?解決了臟讀問題 ? 但是存在不可重復讀和幻讀

  repeated read 可重復讀 ? ? ?解決了臟讀和不可重復讀,但是存在幻讀現象

  serializable 串行化  ? 解決了臟讀,不可重復讀和幻讀現象,但是發生了鎖等待現象,降低了事務間的并發訪問性能。

轉載于:https://www.cnblogs.com/maydow/p/4897072.html

總結

以上是生活随笔為你收集整理的事务的隔离界别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。