事務是使用者定義的乙個資料庫操作序列,這些操作要麼全做要麼全不做,是乙個不可分割的工作單位。
事務的執行結果必須是使資料庫從乙個一致性狀態到另乙個一致性狀態。如:a使用者和b使用者賬戶餘額加起來一共100,不管a與b之間如何轉賬,事務結束後,a和b賬戶餘額應為100。這就是事務的一致性。
乙個事務的執行不能被其他事務所干擾(乙個事務內部操作及使用的資料對其他事務是隔離的),多個事務併發訪問資料庫時,事務之間相互隔離。如:併發事務t1,t2,事務t1,要麼在t2事務開始前結束要麼在t2結束後開始。
隔離級別
1):read uncommited(讀未提交):乙個事務讀取了另乙個事務未提交的資料。
髒讀t1
t2r(c)=100 —–> w(c)=200
r(c)=100
rollback—–>c恢復為100
2):read commited(讀提交):乙個事務等待另乙個事務提交之後才能讀取資料
不可重複讀
t1t2
r(a)=100 r(b)=100 ——>求和=150
r(b)=100——>w(b)=200
r(a)=100 r(b)=200 ——>求和=300
2):repeatable read(重複讀)開始讀取資料庫(事務開啟時),不再允許修改操作
不可重複讀對應的是update操作,可能會出現幻讀,幻讀對應的是insert操作。
3):serializable:事務序列化順序執行,可以避免髒讀,不可重複讀,幻讀這種隔離級別高,效率低,影響效能,一般不使用。
大多數據資料庫預設的隔離級別是read commited(讀提交)
事務一旦提交,對資料庫的更改就是永久性的。
資料庫事務 四大特性 隔離級別
以下引用自 原子性 atomicity 乙個事務要麼全部執行,要麼不執行 一致性 consistency 事務的執行並不改變資料庫中資料的一致性。例如,完整性約束了a b 10,乙個事務改變了a,那麼b也隨之改變 拿轉賬來說,假設使用者a和使用者b兩者的錢加起來一共是5000,那麼不管a和b之間如何...
資料庫事務四大特性 隔離級別
要熟悉事務之前我們先了解一下sql 概念 事務就是一組dml語句組成,這些語句在邏輯上存在關聯性,有要麼全部成功,要麼全部失敗。1 原子性 乙個事務是乙個不可分割的整體,為了保證事務的總體目標,事務必須具有原子性,即當資料修改時,要麼全部執行,要麼全部不執行。即,不允許事務部分的完成,避免了只執行這...
資料庫事務四大特性 隔離級別
以轉賬為例 事務是指滿足acid的一組操作,可以通過commit提交乙個事務,也可以使用rollback進行回滾。1.原子性 atomicity 事務被視為不可分割的最小單元,事務的所有操作要麼全部提交成功,要麼全部失敗回滾。2.一致性 consisitency 資料庫在事務執行前後都保持一致性狀態...