事務的ACID特性及ANSI隔離級別

2021-12-30 01:08:20 字數 1199 閱讀 5787

事務的acid特性

acid,指資料庫事務正確執行的四個基本要素的縮寫。包含:原子性(atomicity)、一致性(consistency)、隔離性(isolation)、永續性(durability)。乙個支援事務(transaction)的資料庫,必須要具有這四種特性,否則在事務過程(transaction processing)當中無法保證資料的正確性,交易過程極可能達不到交易方的要求。

原子性將事務是為不可分割的最小單元,整個事務中的操作要不全部提交成功,要麼失敗全部回滾。不可能只執行其中的一部分操作。

一致性資料庫總是從乙個一致性的狀態轉換成另乙個一致性的狀態。

隔離性乙個事務所做的修改在最終提交之前,對其它事務時不可見的。

永續性一旦事務提交,則所做的修改會永遠儲存到資料庫中。此時即使系統崩潰,修改的資料也不會丟失。

事務的四種隔離級別

未提交讀

事務中的修改即使沒有提交對其它事務也是可見的。

提交讀(大多數資料庫系統預設隔離級別)

乙個事務從開始到提交之前所作的任何事務對其他事務都是不可見的。

可重複讀(mysql預設隔離級別)

同一事物中多次讀取同樣的記錄的結果是一樣的。

可序列化

最高隔離級別,強制事務序列。

四個可能引發的問題

髒讀事務可以讀取未提交的資料。

不可重複讀

兩次執行同樣的查詢,可能會得到不一樣的結果。

幻讀當某個事務再次讀取該範圍的記錄時,另乙個事務又在該範圍插入了新的記錄,當之前的事務再次讀取該範圍的記錄時,會產生幻行。

加鎖讀由於在每一行的資料上都加鎖,會導致大量的超時和鎖爭用問題。

各隔離級別和導致的問題

隔離級別

髒讀

不可重複讀

幻讀

加鎖讀

未提交讀

是 是

是 否

提交讀

否 是

是 否

可重複讀

否 否

是 否

可序列化

否 否

否 是

事務特性(ACID)

原子性 是指事務乙個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。不能夠單獨執行。把一組操作放入事務中 一致性 事務的執行的前後,資料的完整性要得到保證。隔離性 強調的是多個使用者併發訪問資料庫的時候,乙個使用者事務不能被其他使用者的事務所干擾到,多個併發事務之間的資料要相互隔離。解決多...

事務ACID特性

所謂事務,它是乙個操作序列,這些操作要麼都執行,要麼都不執行,它是乙個不可分割的工作單位。例如,銀行轉帳工作 從乙個帳號扣款並使另乙個帳號增款,這兩個操作要麼都執行,要麼都不執行。資料庫事務必須具備acid特性,acid是atomic 原子性 consistency 一致性 isolation 隔離...

事務ACID特性

所謂事務,它是乙個操作序列,這些操作要麼都執行,要麼都不執行,它是乙個不可分割的工作單位。例如,銀行轉帳工作 從乙個帳號扣款並使另乙個帳號增款,這兩個操作要麼都執行,要麼都不執行。資料庫事務必須具備acid特性,acid是atomic 原子性 consistency 一致性 isolation 隔離...