事務 四個特性

2021-10-10 09:07:34 字數 1355 閱讀 6389

事務具有4個特徵,分別是原子性、一致性、隔離性和永續性,簡稱事務的acid特性;

一、原子性(atomicity)

乙個事務要麼全部提交成功,要麼全部失敗回滾,不能只執行其中的一部分操作,這就是事務的原子性

二、一致性(consistency)

事務的執行不能破壞資料庫資料的完整性和一致性,乙個事務在執行之前和執行之後,資料庫都必須處於一致性狀態。

如果資料庫系統在執行過程中發生故障,有些事務尚未完成就被迫中斷,這些未完成的事務對資料庫所作的修改有一部分已寫入物理資料庫,這是資料庫就處於一種不正確的狀態,也就是不一致的狀態

三、隔離性(isolation)

事務的隔離性是指在併發環境中,併發的事務時相互隔離的,乙個事務的執行不能不被其他事務干擾。不同的事務併發操作相同的資料時,每個事務都有各自完成的資料空間,即乙個事務內部的操作及使用的資料對其他併發事務時隔離的,併發執行的各個事務之間不能相互干擾。

在標準sql規範中,定義了4個事務隔離級別,不同的隔離級別對事務的處理不同,分別是:未授權讀取,授權讀取,可重複讀取和序列化

1、讀未提交(read uncommited),該隔離級別允許髒讀取,其隔離級別最低;比如事務a和事務b同時進行,事務a在整個執行階段,會將某資料的值從1開始一直加到10,然後進行事務提交,此時,事務b能夠看到這個資料項在事務a操作過程中的所有中間值(如1變成2,2變成3等),而對這一系列的中間值的讀取就是未授權讀取

2、授權讀取也稱為已提交讀(read commited),授權讀取只允許獲取已經提交的資料。比如事務a和事務b同時進行,事務a進行+1操作,此時,事務b無法看到這個資料項在事務a操作過程中的所有中間值,只能看到最終的10。另外,如果說有乙個事務c,和事務a進行非常類似的操作,只是事務c是將資料項從10加到20,此時事務b也同樣可以讀取到20,即授權讀取允許不可重複讀取。

3、可重複讀(repeatable read)

就是保證在事務處理過程中,多次讀取同乙個資料時,其值都和事務開始時刻是一致的,因此該事務級別禁止不可重複讀取和髒讀取,但是有可能出現幻影資料。所謂幻影資料,就是指同樣的事務操作,在前後兩個時間段內執行對同乙個資料項的讀取,可能出現不一致的結果。在上面的例子中,可重複讀取隔離級別能夠保證事務b在第一次事務操作過程中,始終對資料項讀取到1,但是在下一次事務操作中,即使事務b(注意,事務名字雖然相同,但是指的是另乙個事務操作)採用同樣的查詢方式,就可能讀取到10或20;

4、序列化

是最嚴格的事務隔離級別,它要求所有事務被序列執行,即事務只能乙個接乙個的進行處理,不能併發執行。

四、永續性(durability)

一旦事務提交,那麼它對資料庫中的對應資料的狀態的變更就會永久儲存到資料庫中。–即使發生系統崩潰或機器宕機等故障,只要資料庫能夠重新啟動,那麼一定能夠將其恢復到事務成功結束的狀態

mysql事務四個特性 事務的四個特性

事務的四個特性 1.原子性 atomicity 1.1什麼是原子性 一般來說,原子是指不能分解成小部分的東西。這個詞在計算的不同分支中意味著相似但又微妙不同的東西。例如,在多執行緒程式設計中,如果乙個執行緒執行乙個原子操作,這意味著另乙個執行緒無法看到該操作的一半結果。系統只能處於操作之前或操作之後...

事務 事務的四個特性

現實生活中,我們往往經常會進行轉賬操作,轉賬操作可以分為兩部分來完成,轉入和轉出。只有這兩部分都完成了才可以認為是轉賬成功。在資料庫中,這個過程是使用兩條語句來完成的,如果其中任意一條語句出現了異常沒有執行,則會導致兩個賬號的金額不同步,造成錯誤。為了防止上面可能出現的情況,mysql引入了事務,所...

事務的四個特性

事務應該具有4個屬性 原子性 一致性 隔離性 持續性。這四個屬性通常稱為acid特性。原子性 atomicity 乙個事務是乙個不可分割的工作單位,事務中包括的諸操作要麼都做,要麼都不做。一致性 consistency 事務必須是使資料庫從乙個一致性狀態變到另乙個一致性狀態。一致性與原子性是密切相關...