1.事務(wù)的特性(ACID)
- A(Atomicity)原子性:在一個事務(wù)中的操作要么都成功要么都失敗。
- C(Consistency)連續(xù)性:
- I(Isolation)隔離性:一個事務(wù)不能被另一個事務(wù)所影響。
- D(Durability)持久性:一個事務(wù)被提交之后對數(shù)據(jù)庫的改變是永久性的。
2.事務(wù)的隔離級別

商品表
-
讀未提交(Read uncommitted)
讀未提交
- 事務(wù)1和事務(wù)2同時開始,事務(wù)2能讀取到事務(wù)1未提交之前的數(shù)據(jù),如果事務(wù)1執(zhí)行失敗回滾,那事務(wù)2讀取到的就是臟數(shù)據(jù)
-
讀已提交(Read commited)
讀已提交
- 事務(wù)2只能讀取到事務(wù)1提交的數(shù)據(jù),解決了臟讀問題。
- 事務(wù)1和事務(wù)2同時開始,事務(wù)2查詢了數(shù)據(jù),事務(wù)1對數(shù)據(jù)進(jìn)行
修改(刪除)之后,事務(wù)2再次查詢數(shù)據(jù),兩次結(jié)果不一致,這就是不可重復(fù)讀
-
可重復(fù)讀(Repeatable Read)
可重復(fù)讀
- 事務(wù)2和事務(wù)1同時開始,事務(wù)2在事務(wù)1
更新/刪除數(shù)據(jù)并提交之后,讀取到的數(shù)據(jù)是一致的,解決了不可重復(fù)讀- 事務(wù)1和事務(wù)2同時開始,事務(wù)1首先查找所有數(shù)量為30的商品,事務(wù)2再此之后插入一條數(shù)量為30的商品,事務(wù)1再次查找數(shù)量為30的商品,兩次查詢結(jié)果不一致。這就是幻讀。
-
串行化(Serializable)
串行化
- 事務(wù)1和事務(wù)2同時啟動,事務(wù)1查找數(shù)量為30的商品,之后事務(wù)2
插入/刪除一條數(shù)量為30的商品,但是被阻塞了,事務(wù)1再次查找數(shù)量為30的商品,并提交事務(wù)。事務(wù)2才繼續(xù)執(zhí)行,解決了幻讀問題。
總結(jié)
從以上案例看來,數(shù)據(jù)庫事務(wù)解決了幾個問題
- 臟讀:一個事務(wù)可以讀取到另一個事務(wù)尚未提交的數(shù)據(jù),如果該數(shù)據(jù)回滾,那么讀取的數(shù)據(jù)就沒有意義。
- 不可重復(fù)讀:一個事務(wù)在執(zhí)行期間多次查詢
同一條數(shù)據(jù),但是查詢結(jié)果不一致。 - 幻讀:一個事務(wù)在執(zhí)行期間查詢
多條數(shù)據(jù),但是查詢結(jié)果不一致。



