事務的特性ACID 隔離級別

2022-03-03 01:28:58 字數 1646 閱讀 5857

1.事務特性acid

1.1 事務的四大特性

1、原子性(atomicity)

事務包裝的一組sql,要麼都執行成功,要麼都失敗。這些操作是不可分割的。

2、一致性(consistency)

資料庫的資料狀態是一致的。

3、永續性:(durability)

事務成功提交之後,對於資料庫的改變是永久的。哪怕資料庫發生異常,重啟之後資料亦然存在。

4、隔離性(isolation)

乙個事務的執行不能被其它事務干擾。即乙個事務內部的操作及使用的資料對其它併發事務是隔離的,併發執行的各個事務之間不能互相干擾。

1.2 一致性和原子性的區別

一致性是保證整個操作成功或失敗是符合預期的,原子性,隔離性,永續性這三個特性是為了約束事務最終實現資料的一致性。一致性和原子性的區別是:一致性強調的最終狀態,要麼是初始狀態(事務回滾),要麼是最終狀態(任務成功執行完成);原子性強調的是操作的完整性,連續的操作不可分割,要麼全部成功,要麼全部失敗。

舉例:張三給李四轉賬100元。那資料庫假設需要 張三扣100,李四加100,記錄一條流水。如果流水沒記錄成功,那整體回滾,張三也沒轉賬成功,李四也沒多錢。這就是原子性的體現。而張三必須扣100,李四必須加100,這個就是一致性了,如果因為某些邏輯原因,導致張三扣了100,流水記錄100轉賬,而李四只加了60。然後這3條操作都成功了,那原子性就符合了,但是一致性就不符合了。

2.事務的隔離級別

2.1 事務併發問題

1、髒讀(最嚴重,杜絕發生)

指乙個事務讀取了另外乙個事務 未提交的資料。

2、不可重複讀

在乙個事務內多次讀取表中的資料,第一次未修改,第二次修改了,多次讀取的結果不同(強調的是資料內容的變化)

3、幻讀(虛讀)

在乙個事務內多次讀取表中的資料,第一次未增刪,第二次增刪了,多次讀取的結果不同。(強調的是資料數量的變化)

2.2 隔離級別

1.read uncommitted 讀未提交,乙個事務讀到另乙個事務沒有提交的資料。

存在:3個問題(髒讀、不可重複讀、虛讀)。

解決:0個問題

2.read committed 讀已提交,乙個事務讀到另乙個事務已經提交的資料。

存在:2個問題(不可重複讀、虛讀)。

解決:1個問題(髒讀),通過在寫的時候加鎖,可以解決髒讀。

3.repeatable read :可重複讀,在乙個事務中讀到的資料始終保持一致,無論另乙個事務是否提交。

存在:1個問題(虛讀)。

解決:2個問題(髒讀、不可重複讀),通過在讀的時候加鎖,可以解決不可重複讀。

4.serializable :序列化,同時只能執行乙個事務,相當於事務中的單執行緒。

存在:0個問題。

解決:3個問題(髒讀、不可重複讀、虛讀),通過序列化,可以解決虛讀。

安全和效能對比

安全性:serializable > repeatable read > read committed > read uncommitted

效能 : serializable < repeatable read < read committed < read uncommitted

常見資料庫的預設隔離級別:

mysql:repeatable read

oracle:read committed

事務的ACID特性與隔離級別

事務所提供的安全保證,通常由眾所周知的首字母縮略詞acid來描述,acid代表原子性 atomicity 一致性 consistency 隔離性 isolation 和永續性 durability 乙個事務是乙個不可分割的工作單位,其中的操作要麼都做,要麼都不做。特徵是能夠在錯誤時終止事務,丟棄該事...

事務的ACID特性和事務的隔離級別

事務transaction acid特性 atomic consistency isolation durability 原子性 事務對資料庫的操作要不全部執行,要不全部不執行,通常事務開始時就將記錄這次修改,原始資料,修改後的資料都儲存在日誌當中,一旦事務中斷,就從日誌裡恢復原來的值 一致性 事務...

事務(ACID特性,讀問題,隔離級別)

三 隔離級別 事務是指一組最小的邏輯操作單元,裡面有多個操作組成。組成事務的每一部分必須要同時提交成功,如果有乙個操作失敗,整個操作回滾。原子性是指事務是乙個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。事務必須使用資料庫從乙個一致性狀態變換到另外乙個一致性狀態。事務的隔離性是多個使用者...