事務的ACID是指什麼?

2022-07-31 02:48:10 字數 2327 閱讀 8467

事務的acid是指什麼?

答:- 原子性(atomic):事務中各項操作,要麼全做要麼全不做,任何一項操作的失敗都會導致整個事務的失敗;

- 一致性(consistent):事務結束後系統狀態是一致的;

- 隔離性(isolated):併發執行的事務彼此無法看到對方的中間狀態;

- 永續性(durable):事務完成後所做的改動都會被持久化,即使發生災難性的失敗。通過日誌和同步備份可以在故障發生後重建資料。

補充:關於事務,在面試中被問到的概率是很高的,可以問的問題也是很多的。首先需要知道的是,只有存在併發資料訪問時才需要事務。當多個事務訪問同一資料時,可能會存在5類問題,包括3類資料讀取問題(髒讀、不可重複讀和幻讀)和2類資料更新問題(第1類丟失更新和第2類丟失更新)。

髒讀(dirty read):a事務讀取b事務尚未提交的資料並在此基礎上操作,而b事務執行回滾,那麼a讀取到的資料就是髒資料。

時間轉賬事務a

取款事務b

t1開始事務

t2開始事務

t3查詢賬戶餘額為1000元

t4取出500元餘額修改為500元

t5查詢賬戶餘額為500元(髒讀)

t6撤銷事務餘額恢復為1000元

t7匯入100元把餘額修改為600元

t8提交事務

不可重複讀(unrepeatable read):事務a重新讀取前面讀取過的資料,發現該資料已經被另乙個已提交的事務b修改過了。

時間轉賬事務a

取款事務b

t1開始事務

t2開始事務

t3查詢賬戶餘額為1000元

t4查詢賬戶餘額為1000元

t5取出100元修改餘額為900元

t6提交事務

t7查詢賬戶餘額為900元(不可重複讀)

幻讀(phantom read):事務a重新執行乙個查詢,返回一系列符合查詢條件的行,發現其中插入了被事務b提交的行。

時間統計金額事務a

轉賬事務b

t1開始事務

t2開始事務

t3統計總存款為10000元

t4新增乙個存款賬戶存入100元

t5提交事務

t6再次統計總存款為10100元(幻讀)

第1類丟失更新:事務a撤銷時,把已經提交的事務b的更新資料覆蓋了。

時間取款事務a

轉賬事務b

t1開始事務

t2開始事務

t3查詢賬戶餘額為1000元

t4查詢賬戶餘額為1000元

t5匯入100元修改餘額為1100元

t6提交事務

t7取出100元將餘額修改為900元

t8撤銷事務

t9餘額恢復為1000元(丟失更新)

第2類丟失更新:事務a覆蓋事務b已經提交的資料,造成事務b所做的操作丟失。

時間轉賬事務a

取款事務b

t1開始事務

t2開始事務

t3查詢賬戶餘額為1000元

t4查詢賬戶餘額為1000元

t5取出100元將餘額修改為900元

t6提交事務

t7匯入100元將餘額修改為1100元

t8提交事務

t9查詢賬戶餘額為1100元(丟失更新)

資料併發訪問所產生的問題,在有些場景下可能是允許的,但是有些場景下可能就是致命的,資料庫通常會通過鎖機制來解決資料併發訪問問題,按鎖定物件不同可以分為表級鎖和行級鎖;按併發事務鎖定關係可以分為共享鎖和獨佔鎖,具體的內容大家可以自行查閱資料進行了解。

直接使用鎖是非常麻煩的,為此資料庫為使用者提供了自動鎖機制,只要使用者指定會話的事務隔離級別,資料庫就會通過分析sql語句然後為事務訪問的資源加上合適的鎖,此外,資料庫還會維護這些鎖通過各種手段提高系統的效能,這些對使用者來說都是透明的(就是說你不用理解,事實上我確實也不知道)。ansi/iso

sql 92標準定義了4個等級的事務隔離級別,如下表所示:

隔離級別

髒讀不可重複讀

幻讀第一類丟失更新

第二類丟失更新

read uncommited

允許允許

允許不允許

允許read committed

不允許允許

允許不允許

允許repeatable read

不允許不允許

允許不允許

不允許serializable

不允許不允許

不允許不允許

不允許需要說明的是,事務隔離級別和資料訪問的併發性是對立的,事務隔離級別越高併發性就越差。所以要根據具體的應用來確定合適的事務隔離級別,這個地方沒有萬能的原則。

事務的ACID是指什麼

1 原子性 atomic 事務中各項操作,要麼全做要麼全不做,任何一項操作的失敗都會導致整個事務的失敗 2 一致性 consistent 事務結束後系統狀態是一致的 3 隔離性 isolated 併發執行的事務彼此無法看到對方的中間狀態 4 永續性 durable 事務完成後所做的改動都會被持久化,...

事務的ACID是指什麼

1 原子性 atomic 事務中各項操作,要麼全做要麼全不做,任何一項操作的失敗都會導致整個事務的失敗 2 一致性 consistent 事務結束後系統狀態是一致的 3 隔離性 isolated 併發執行的事務彼此無法看到對方的中間狀態 4 永續性 durable 事務完成後所做的改動都會被持久化,...

什麼是事務的ACID

1 原子性 atomic 事務中各項操作,要麼全做要麼全不做,任何一項操作的失敗都會導致整個事務的失敗 2 一致性 consistent 事務結束後系統狀態是一致的 3 隔離性 isolated 併發執行的事務彼此無法看到對方的中間狀態 4 永續性 durable 事務完成後所做的改動都會被持久化,...