1. 程式人生 > >mysql隔離級別簡述

mysql隔離級別簡述

一) 事務的四要素 ACID

1 原子性:事務開始後所有操作,要麼全部成功,要麼全部失敗 (回滾),也就是說

事務是一個不可分割的整體,就像化學元素原子一樣,最小的單位;

2 隔離性 :同一時間,只允許一個事務請求同一資料,不同事務之間彼此沒有任何 干擾

3 一致性:事務開始前和結束後,資料庫完整性約束沒有被破壞;

4永續性 : 事務完成後,事務對資料庫的所有更新被儲存到資料庫,不能回滾;

二) 事務的併發問題

1)髒讀 :事務a讀取了事務b沒有提交的資料,然後如果b回滾了操作,那麼a讀取到的

資料是髒資料;

2) 不可重複讀 : 事務a多次讀取同一資料,事務b在事務a多次讀取過程中,對資料做了更新

操作,導致多次讀取結果不一致;

3) 幻讀: 事務a多次讀取同一資料;事務b執行插入或者刪除操作,a做更新操作,在後發現

資料有改動,就像發生幻覺一樣 這就是幻讀;

注意: 不可重複讀側重於修改操作,幻讀側重於新增和刪除操作。街區不可重複讀只要

鎖住條件行,而解決幻讀 則要鎖表了。

select @@tx_isolation;

mysql預設隔離級別 repeatable-read

事務隔離級別 髒讀 不可重複讀 幻讀
讀未提交(read-uncommitted)
不可重複讀(read-committed)
可重複讀(repeatable-read)
序列化(serializable)

修改資料庫隔離級別

set session transaction isolation level read  uncommited