事務的ACID是指什麼

2021-08-14 07:26:52 字數 3705 閱讀 3513

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

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

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

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

【補充】關於事務,在面試中被問到的概率是很高的,可以問的問題也是很多的。首先需要知道的是,只有存在併發資料訪問時才需要事務。當多個事務訪問同一資料時,可能會存在5類問題,包括3類資料讀取問題(髒讀、不可重複讀和幻讀)和2類資料更新問題(第1類丟失更新和第2類丟失更新)。資料庫事務隔離級別越高,併發***越小,相應的付出的代價就越高,因為事務隔離實質上就是使事務在一定程度上『序列化』,這顯然與『併發』是矛盾的。

髒讀、不可重複讀和幻讀實際上都是資料庫讀一致性問題,必須由資料庫提供一定的隔離機制來解決,資料庫實現事務隔離的方式,基本上可以分為以下兩種

一種是在讀資料前對其進行加鎖,阻止其它事務對資料進行修改

不加任何鎖,通過一定的機制生成乙個資料請求時間點的一致性資料快照,並用這個快照來提供一定級別(語句級或事物級)的一致性讀取,從使用者的角度來看,好像資料庫提供同乙個資料的多個版本,因此,這種方式又被稱為多版本併發控制簡稱mvcc

時間

轉賬事務a

取款事務b

t1

開始事務

t2

開始事務

t3

查詢賬戶餘額為1000元

t4

取出500元餘額修改為500元

t5

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

t6

撤銷事務餘額恢復為1000元

t7

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

t8

提交事務

時間

轉賬事務a

取款事務b

t1

開始事務

t2

開始事務

t3

查詢賬戶餘額為1000元

t4

查詢賬戶餘額為1000元

t5

取出100元修改餘額為900元

t6

提交事務

t7

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

時間

統計金額事務a

轉賬事務b

t1

開始事務

t2

開始事務

t3

統計總存款為10000元

t4

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

t5

提交事務

t6

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

時間

取款事務a

轉賬事務b

t1

開始事務

t2

開始事務

t3

查詢賬戶餘額為1000元

t4

查詢賬戶餘額為1000元

t5

匯入100元修改餘額為1100元

t6

提交事務

t7

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

t8

撤銷事務

t9

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

時間

轉賬事務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是指什麼?

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

什麼是事務的ACID

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