資料庫事務的4個特徵

2021-10-02 14:54:35 字數 2074 閱讀 3594

事務是由一系列對系統中資料進行訪問與更新的操作所組成的乙個程式執行邏輯單元。

事務是dbms(資料庫管理系統)中最基礎的單元,事務不可分割。

原子性(atomicity)、一致性(consistency)、隔離性(isolation)、永續性(duration),簡稱acid

原子性是指事務包含的所有操作要麼全部成功,要麼全部失敗回滾,因此事務的操作如果成功就必須要完全應用到資料庫,如果操作失敗則不能對資料庫有任何影響。

致性是指事務必須使資料庫從乙個一致性狀態變換到另乙個一致性狀態,也就是說乙個事務執行之前和執行之後都必須處於一致性狀態。

拿轉賬來說,假設使用者a和使用者b兩者的錢加起來一共是5000,那麼不管a和b之間如何轉賬,轉幾次賬,事務結束後兩個使用者的錢相加起來應該還得是5000,這就是事務的一致性。

因此一致性更多的是要程式設計師去維護,因為出現一致性問題一般不是資料庫本身機制問題,而是程式設計師的邏輯問題和**的不嚴謹性問題。

隔離性是當多個使用者併發訪問資料庫時,比如操作同一張表時,資料庫為每乙個使用者開啟的事務,不能被其他事務的操作所干擾,多個併發事務之間要相互隔離。

即要達到這麼一種效果:對於任意兩個併發的事務t1和t2,在事務t1看來,t2要麼在t1開始之前就已經結束,要麼在t1結束之後才開始,這樣每個事務都感覺不到有其他事務在併發地執行。

多個事務併發訪問時,事務之間是隔離的,乙個事務不應該影響其它事務執行效果。這指的是在併發環境中,當不同的事務同時操縱相同的資料時,每個事務都有各自的完整資料空間。由併發事務所做的修改必須與任何其他併發事務所做的修改隔離。

1、read uncommitted(讀取未提交[新增中文釋義]內容)

最低的隔離級別,什麼都不需要做,乙個事務可以讀到另乙個事務未提交的結果。所有的併發事務問題都會發生。

比如:事務a更改了資料x,但是還未提交,此時事務b去讀取了資料x,得到的就不是最新的資料,這便是髒讀(dirty read)

2、read committed(讀取提交內容)

只有在事務提交後,其更新結果才會被其他事務看見。可以解決髒讀問題。這樣上面的問題得到解決。

但是問題還是存在的,事務a select了一條資料,接著事務b update 這條資料,然後commit,這時候a還未提交,a再回來讀這條資料,發現資料居然變了,這種情況叫做不可重複讀(non-repeatable reads)

3、repeated read(可重複讀)

在乙個事務中,對於同乙份資料的讀取結果總是相同的,無論是否有其他事務對這份資料進行操作,以及這個事務是否提交。可以解決髒讀、不可重複讀。

具體來講,即是在上乙個級別的基礎上,保證不會在乙個事務內兩次select同一條資料會出現變化,即使別的事務對你select的物件進行update操作不會影響。

但是,如果是insert操作,在這個隔離級別還是會受到影響。事務a開啟事務,並select一段有範圍的資料,然後事務b開啟事務,在先前a事務select的那段有範圍的資料中insert一條資料,然後提交事務,接著事務a再select出來這段資料,發現資料多了一條,這種情況叫幻讀(phantom read)

4、serialization(可序列化)

事務序列化執行,隔離級別最高,犧牲了系統的併發性。可以解決併發事務的所有問題。

永續性是指乙個事務一旦被提交了,那麼對資料庫中的資料的改變就是永久性的,即便是在資料庫系統遇到故障的情況下也不會丟失提交事務的操作。

例如我們在使用jdbc運算元據庫時,在提交事務方法後,提示使用者事務操作完成,當我們程式執行完成直到看到提示後,就可以認定事務以及正確提交,即使這時候資料庫出現了問題,也必須要將我們的事務完全執行完成,否則就會造成我們看到提示事務處理完畢,但是資料庫因為故障而沒有執行事務的重大錯誤。

——————————————————————————————————————————————

參考:**資料庫事務的隔離性

資料庫事務的特徵

1.原子性 atomicity 乙個原子事務要麼完整執行,要麼乾脆不執行。這意味著,工作單元中的每項任務都必須正確執行。如果有任一任務執行失敗,則整個工作單元或事務就會被終止。即此前對資料所作的任何修改都將被撤銷。如果所有任務都被成功執行,事務就會被提交,即對資料所作的修改將會是永久性的。2.一致性...

資料庫事務的4個特性

1,第一原子性 原子性是指事務是乙個不可分割的單元,要麼都發生要麼都不發生,比如轉賬,要麼同時成功,要麼同時失敗 2,一致性 如a給b轉賬,不論轉賬的事務操作是否成功,其兩者的存款總額不變 3,隔離性 多個事務併發訪問時,事務之間是有隔離的 事務的隔離級別有 read uncommited 髒讀 讀...

DB資料庫的事務特徵

事務的四個特性 原子性 一致性 隔離性和持續性。1 原子性 事務是資料庫中的乙個邏輯工作單位,事務中的各項操作要都做,要麼都不做。2 一致性 事務執行結果必須是使資料庫由乙個一致性的狀態變到另乙個一致性的狀態。如果資料庫系統執行發生故障,有些事務沒有正確完成就被迫中斷,未完成事務所做的一些操作已經寫...