資料庫 四大隔離級別

2021-10-20 03:18:01 字數 1070 閱讀 7323

資料庫事務的隔離級別有4種,由低到高分別為read uncommitted 、read committed 、repeatable read 、serializable。

在事務的併發操作中可能會出現髒讀,不可重複讀,幻讀

髒讀:指當乙個事務正在訪問資料,並且對資料進行了修改,而這種資料還沒有提交到資料庫中,這時,另外乙個事務也訪問這個資料,然後使用了這個資料。因為這個資料還沒有提交那麼另外乙個事務讀取到的這個資料我們稱之為髒資料。依據髒資料所做的操作肯能是不正確的。

不可重複讀:指在乙個事務內,多次讀同一資料。在這個事務還沒有執行結束,另外乙個事務也訪問該同一資料,那麼在第乙個事務中的兩次讀取資料之間,由於第二個事務的修改第乙個事務兩次讀到的資料可能是不一樣的,這樣就發生了在乙個事物內兩次連續讀到的資料是不一樣的,這種情況被稱為是不可重複讀。

幻象讀:乙個事務先後讀取資料,第一次讀取資料後的值與第二次讀取的值相同,中間有個修改資料的操作,但是未提交事物

讀未提交 (read uncommitted)

讀未提交,就是乙個事務可以讀取另乙個未提交事務的資料。容易產生髒讀的問題

讀提交(read committed)

讀提交,就是只能讀到已經提交了的內容,容易產生 不可重複讀的問題

可重複讀(repeated read)

可重複讀,就是專門針對「不可重複讀」這種情況而制定的隔離級別,自然,它就可以有效的避免「不可重複讀」。而它也是mysql的預設隔離級別。 容易產生幻讀的問題

序列化 serializable

這是資料庫最高的隔離級別,這種級別下,事務「序列化順序執行」,也就是乙個乙個排隊執行。這種級別下,「髒讀」、「不可重複讀」、「幻讀」都可以被避免,但是執行效率奇差,效能開銷也最大,所以基本沒人會用。

資料庫四大特性 隔離級別

原子性 要麼全部成功 要麼全部失敗回滾。隔離性 多個使用者併發的訪問資料庫,或操作同一張表,資料庫為每乙個使用者開啟事務,不能被其他事務干擾,併發事務需要隔離。一致性 乙個事務從乙個事務執行之前和執行之後都必須處於一致性的狀態。永續性 乙個事務一旦被提交,那麼對於資料庫中的資料操作是永久性的。髒讀,...

mysql資料庫四大隔離級別

四大隔離級別 4個等級的事務隔離級別,在相同資料環境下,使用相同的輸入,執行相同的工作,根據不同的隔離級別,可以導致不同的結果。不同事務隔離級別能夠解決的資料併發問題的能力是不同的。1 serializable 序列化 不會出現任何併發問題,因為它是對同一資料的訪問是序列的,非併發訪問的 效能最差 ...

資料庫事務 四大特性 隔離級別

以下引用自 原子性 atomicity 乙個事務要麼全部執行,要麼不執行 一致性 consistency 事務的執行並不改變資料庫中資料的一致性。例如,完整性約束了a b 10,乙個事務改變了a,那麼b也隨之改變 拿轉賬來說,假設使用者a和使用者b兩者的錢加起來一共是5000,那麼不管a和b之間如何...