什么是ACID

事務是由一組SQL語句組成的邏輯處理單元,事務具有以下4個屬性,通常簡稱為事務的ACID屬性。

ACID

Atomic(原子性)

Consistency(一致性)

Isolation(隔離性)

Durability(持久性)的英文縮寫。

Atomic(原子性):指整個數據庫事務是不可分割的工作單位。只有使據庫中所有的操作執行成功,才算整個事務成功;事務中任何一個SQL語句執行失敗,那么已經執行成功的SQL語句也必須撤銷,數據庫狀態應該退回到執行事務前的狀態。

Consistency(一致性):指數據庫事務不能破壞關系數據的完整性以及業務邏輯上的一致性。例如對銀行轉帳事務,不管事務成功還是失敗,應該保證事務結束后ACCOUNTS表中Tom和Jack的存款總額為2000元。

Isolation(隔離性):指的是在并發環境中,當不同的事務同時操縱相同的數據時,每個事務都有各自的完整數據空間。

隔離級別:

由低到高分別為Read uncommitted 、Read committed 、Repeatable read 、Serializable 四種。

Read uncommitted:讀取到未提交的數據,即產生臟讀現象。例如:發工資時,會計多打了3000,此時還未提交。你在查詢工資時,發現多了3000,然后會計發現了問題,回滾事務,重新提交。你再次查詢,發現工資正常。

Read committed:一個事務要等另一個事務提交后才能讀取數據,讀取正在被修改的數據,即產生不能重復讀現象。例如:發完工資,你查詢了工資卡有錢,然后在網上買個新款機械鍵盤,但是你家領導在這個時候將你的工資轉到了自己卡里面。你發現交易失敗,再次查詢,工資卡沒錢了?。ㄒ虼嗽谧x數據時,如果對數據有update操作,讀操作在update之后進行)

Repeatable read:在開始讀取數據(事務開啟)時,不再允許修改操作,但是會產生幻讀現象(針對讀時發生insert)例如:領導查賬,看你本月流水,查了一下200塊,心里覺得你還是很聽話的。這時候你買了機械鍵盤,然后領導打印消費清單,發現3200 ,這就是幻讀現象。

Serializable:序列化。最高的事務隔離級別,在該級別下,事務串行化順序執行,可以避免臟讀、不可重復讀與幻讀,但是此級別下數據庫效率低下,影響數據庫性能,一般不使用。

Durability(持久性):指的是只要事務成功結束,它對數據庫所做的更新就必須永久保存下來。即使發生系統崩潰,重新啟動數據庫系統后,數據庫還能恢復到事務成功結束時的狀態。


個人公號:【排骨肉段】,可以關注一下。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。