1. 程式人生 > 其它 >Mysql_四大特性(ACID)、併發事務帶來的問題、四種隔離級別

Mysql_四大特性(ACID)、併發事務帶來的問題、四種隔離級別

四大特性(ACID)

1. 原子性(Atomicity): 事務是最小的執行單位,不允許分割。事務的原⼦性確保動作要麼全部完成,要麼完全不起作⽤;

2. 一致性(Consistency): 執行事務前後,資料保持⼀致,多個事務對同⼀個數據讀取的結果是相同的;

3. 隔離性(Isolation): 併發訪問資料庫時,⼀個使用者的事務不被其他事務所⼲擾,各併發事務之間資料庫是獨立的;

4. 永續性(Durability): ⼀個事務被提交之後。它對資料庫中資料的改變是持久的,即使資料庫發生故障也不應該對其有任何影響。

併發事務帶來的問題

髒讀

某個事務已更新一份資料,另一個事務在此時讀取了同一份資料,由於某些原因,前一個RollBack了操作,沒有提交事務,則後一個事務所讀取的資料就會是不正確的。

不可重複讀

一個事務多次查詢卻返回了不同的資料值,這是由於在查詢間隔,被另一個事務修改並提交了。

幻讀

在一個事務的兩次查詢中資料筆數不一致(在查詢間隔中,被另一個事務插入了資料)。

四種隔離級別

READ-UNCOMMITTED(讀取未提交): 最低的隔離級別,允許讀取尚未提交的資料變更。

READ-COMMITTED(讀取已提交): 允許讀取併發事務已經提交的資料。

REPEATABLE-READ(可重複讀): 對同⼀欄位的多次讀取結果都是⼀致的,除非是事務本身修改的。

SERIALIZABLE(可序列化): 最高的隔離級別,完全服從ACID的隔離級別。所有的事務依次逐個執行,這樣事務之間就完全不可能產生干擾。