1. 程式人生 > >mysql的事務,隔離級別和鎖

mysql的事務,隔離級別和鎖

事務就是一組一起成功或一起失敗的sql語句。事務還應該具備,原子性,一致性,隔離性和永續性。

 

一、事務的基本要素 (ACID)

1、原子性:事務開始後,所有的操作,要麼全部成功,要麼全部失敗,不可能處於中間狀態,事務是一個不可分割的整體,就像原子一樣。

2、一致性:事務開始前和結束後,資料庫的完整性約束沒有破壞,A向B轉賬,A扣了錢,但B卻沒到賬。

3、隔離性:同時發生的事務(併發事務)不應該導致資料庫處於不一致的狀態中,每個事務都獨立執行,不影響其他事務的存在。

4、永續性:事務對資料庫的更改都會儲存在磁碟上,不會丟失。

 

二、事務的併發問題

1、髒讀:事務A讀取了事務B未提交的寫入資料,讀取到的資料就稱為髒資料

2、不可重複讀:事務A多次讀取同一資料,但在讀取過程中,事務B對資料做了修改,並提交了。導致多次讀取同一資料,結果不一樣。

3、幻讀:事務A對錶中所有資料行進行了修改,比如設定status = 1,但同時,事務B往該表插入了一行新資料status = 0,對於操作事務A的使用者而言,表中還有一條記錄沒被修改,就像發生幻覺一樣。

 

三、事務隔離性的四個級別

事務隔離級別 髒讀 不可重複讀 幻讀
讀取未提交 read uncommitted

讀已提交 read committed

×

可重複讀取 repeatable read

×

×

序列化 serializable

×

×

×