如果乙個資料庫聲稱支援事務的操作,那麼該資料庫必須支援以下四個特性:
原子性(atomicity)
一次事務中如果要進行多個資料操作,最終的結果要麼所有資料操作都成功,要麼所有資料操作都失敗
例如a轉賬給b100元,最終的結果要求a減少100元,b增加100元,不能出現a減少了但b沒有增加
一致性(consistancy)
一致性就是資料庫中的事務操作要合乎邏輯
例如a轉賬給b100元,最終的結果要求a減少100元,b增加10元,此時事務提交成功(滿足了原子性),但不合乎邏輯(不滿足事務一致性)
隔離性(isolation)
隔離性指的是多個事務併發訪問資料庫時,比如同時操作同一條資料,資料庫會對資料上鎖,若乙個獲得鎖的事務更新操作沒有提交,其他的事務無法運算元據,多個併發事務之間要相互隔離
永續性(durability)
永續性指的是事務一旦提交了,對資料的更改是永久性的,即使資料庫系統故障也不會丟失事務的提交操作
事務的四大特性簡稱acid。
事務如果沒有隔離性會發生的問題
1.更新丟失
第一類:事務a撤銷時,把已經提交的事務b的更新資料覆蓋了
第二類:事務a提交時覆蓋事務b的更新資料,導致事務b的操作無效
解決方法:對行加鎖,只允許併發乙個更新事務
2.髒讀
髒讀指的是在乙個事務處理過程中讀取了另乙個事務未提交的資料
解決方法:在乙個事務提交前,任何其他事務不可讀取其修改過未提交的值
3.不可重複讀
乙個事務同時對一行資料讀取兩次,讀取的資料不一致。
解決方法:只有在修改事務完全提交後才可讀取
不可重複讀和髒讀的區別:髒讀是讀取了另乙個事務未提交的資料,不可重複讀是先讀取了另乙個事務提交前的資料,後讀取的提交後的資料。
在某些情況下,不可重複讀並不是問題,以最後提交的資料為準
4.虛讀(幻讀)
同乙個事務中兩次統計一張資料表得到的資料不一致,第二次讀增加一資料行
解決方法:在事務操作完成資料處理前,任何其他事務都不可新增新資料
幻讀和不可重複讀的區別:
不可重複讀是乙個事務兩次讀取同一條資料的結果不一致
幻讀是乙個事務兩次統計一張資料表的統計結果不一致
事務的特性
事務具有四個特徵 原子性 atomicity 一致性 consistency 隔離性 isolation 和持續性 durability 這四個特性簡稱為 acid 特性。1 原子性 事務是資料庫的邏輯工作單位,事務中包含的各操作要麼都做,要麼都不做 2 一致性 事 務執行的結果必須是使資料庫從乙個...
事務的特性
事務 transaction 是併發控制的單位,是使用者定義的乙個操作序列。這些操作要麼都做,要麼都不做,是乙個不可分割的工作單位。通過事務,sql server能將邏輯相關的一組操作繫結在一起,以便伺服器保持資料的完整性。事務通常是以begin transaction開始,以commit或roll...
事務的特性
事務的隔離性 如果乙個資料庫聲稱支援事務的操作,那麼該資料庫必須要具備以下四個特性 一次事務中如果進行多個資料操作的業務,最終的結果要麼所有操作都成功,要麼所有操作都失敗。一致性就是資料表中的資料更新要求合乎邏輯的特性,滿足了原子性不一定滿足一致性 例如 a轉賬給b,轉了100元,最終的結果要求 a...