所謂事務是使用者定義的乙個資料操作序列,這些操作可作為乙個完整的工作單元,要麼全部執行,要麼全部不執行,是乙個不可分割的工作單位.
事務中的操作一般是對資料的更新操作,包括增,刪,改.
事務的特徵:原子性(atomicity),一致性(consistency),隔離性(isolation),持續性(durability) acid
併發操作問題
丟失更新:事務t1,t2同時讀入同一資料並加以修改,t2的提交結果會破壞t1提交的結果.
不可重複讀:事務t1讀取資料後,事務t2執行更新操作,使t2無法再現前一次讀取結果.
讀"髒"資料:事務t1修改資料後撤銷,使得t2讀取的資料與資料庫中不一致.
封鎖是最常用的併發控制技術.
基本思想:需要時,事務通過向系統請求對它所希望的資料物件加鎖,以確保它不被非預期改變.
鎖:乙個鎖實質上就是允許或阻止乙個事務對乙個資料物件的訪問特權.
基本的鎖型別:1)排他鎖(x鎖),用於寫操作. 2)共享鎖(s鎖),用於讀操作
封鎖的工作原理:
1)若事務t對資料d加了x鎖,則所有別的事務對資料d的鎖請求都必須等待直到事務t釋放鎖.
2)若事務t對資料d加了s鎖,則別的事務還可對資料d請求s鎖,而對資料d的x鎖請求必須等待直到事務t釋放鎖.
3)事務執行資料庫操作時都要先請求相應的鎖,即對讀請求s鎖,對更新請求x鎖.這個過程一般是由dbms在執行操作時自動隱含地進行.
4)事務一直占有獲得的鎖直到結束時釋放.
封鎖的粒度:通常用粒度來描述封鎖的資料單元的大小,dbms可以決定不同粒度的鎖.粒度越細,併發性越大,但軟體複雜性和系統開銷也就越大.
封鎖的級別:封鎖的級別又稱為一致性級別或隔離度.
0級封鎖:不重寫其他非0級封鎖事務的未提交的更新資料(實用價值低).
1級封鎖:不允許重寫未提交的更新資料.防止了丟失更新的發生.
2級封鎖:既不重寫也不讀未提交的更新資料(防止了讀髒資料).
3級封鎖:不讀未提交的更新資料,不寫任何(包括讀操作)未提交資料. //不代表完全封鎖
死鎖和活鎖:活鎖-先來先服務 死鎖-預防 1)一次性鎖請求 2)鎖請求排序 3)序列化處理 4)資源剝奪
可序列性:一組事務的乙個排程就是它們的基本操作的一種排序.
在資料庫系統中,可序列性就是併發執行的正確性準則,即當且當一組事務的併發執行排程是可序列化的,才認為它們是正確的.
兩段封鎖法(two-phase locking,2pl)
1)發展(growing)或加鎖階段 2)收縮(shrinking)或釋放鎖階段
事務併發 併發控制(加鎖)
事務處理中的併發控制 1.併發操作 資料庫是乙個共享資源,允許多個使用者程式並行地訪問資料庫,所以當多個使用者併發地訪問同一資料,就可能出現資料的不一致性。例如 假設有兩個事務 t1 和 t2 它們都需要讀出並修改資料 a 其執 況如下所示 執行順序 1 2 3 4 5 6 事務t1 讀aa a 1...
事務的併發控制
我們知道,當多個執行緒都開啟事務運算元據庫中的資料時,資料庫系統要能進行隔離操作以保證各個執行緒獲取資料的準確性。也就是說,事務的隔離性主要用於解決事務的併發安全問題 事務隔離級別 髒讀不可重複讀 幻讀讀未提交 read uncommitted 是是 是不可重複讀 read committed 否是...
事務併發控制(一)
1 事務的概念 事務是使用者定義的一組資料庫操作序列。事務具有acid特性 原子性 atomicity 一致性 consistency 隔離性 isolation 和持續性 durability 原子性指 事務包含的所有操作要麼全部被執行,要麼都不執行 一致性指 事務的執行結果必須使資料庫從乙個一致...