事務乙個乙個序列執行,每個時刻只有乙個事務,允許事務併發執行
併發操作破壞了事務的隔離性。導致:丟失修改,不可重複讀,讀髒資料
併發控制機制就是要用正確的方式排程併發操作,使乙個使用者的執行不受其他事務影響
資料庫的應用優勢可以允許不一致性
併發控制技術:封鎖,時間戳,樂觀控制法,多版本併發控制
封鎖型別:排他鎖(x),共享鎖(s)
排他鎖:寫鎖,事務對資料物件a加上x鎖,其他事務就不能讀取修改物件a
共享鎖,讀鎖,其他事務可以讀,其他事務不能加x,只能讀
規則:何時申請x鎖,s鎖,持鎖事件,釋放,封鎖協議
封鎖協議為**
1.一級鎖協議:事務t在修改資料r之前必須加x鎖,直到事務結束後釋放,結束包含,commmit,rollback.僅僅讀資料不修改不對其加鎖,不能保證可重複讀和讀髒資料
2.二級協議:事務t在讀取資料r必須對其加s鎖,讀完後釋放,不保證可重複讀
3.**協議:事務t在讀取資料r必須對其加s鎖,事務結束釋放
多個鎖時,導致乙個鎖始終等待,避免活鎖的方法採用先來先服務
預防死鎖方法:
一次封鎖法:一次將要使用的資料全部加鎖:缺點,降低併發性
順序封鎖法:
死鎖的診斷與解除
資料庫管理系統對併發事務不同的排程可能產生不同的結果,序列排程時正確的
11.5.1 可序列化排程
11.5.2衝突 可序列化排程
衝突操作是指不同的事務對同一資料的讀寫和寫寫操作
如何使用封鎖機制產生可序列化排程
調圖時可序列化的,使用兩段鎖協議方法實現排程可序列化
兩段鎖:事務分為兩個階段對資料加鎖和解鎖
封鎖物件的大小為粒度:邏輯單元:屬性值,其集合,元組,關係,索引項。物理單元:葉,物理記錄。
11.7.1 多粒度封鎖
多粒度樹,顯示封鎖,隱式封鎖,檢查是否衝突
11.7.2 意向鎖
意向鎖:如果對一節點加意向鎖,說明節點的下層節點在被枷鎖,對任意節點加鎖時,必須對其上層節點加鎖。
三種意向鎖:is鎖,ix鎖 six鎖
mysql 併發控制 mysql併發控制
mysql併發控制 當有多個查詢需要同時修改同乙個資料,就會產生併發控制的問題。mysql可以在兩個層面進行併發控制 伺服器層和儲存引擎層。mysql通過加鎖實現併發控制 鎖有兩類 讀鎖 共享鎖,即乙個讀鎖不會阻塞其它讀鎖,多個使用者可同時讀取同乙個資源,而不互相干擾。寫鎖 排他鎖,即乙個寫鎖會阻塞...
併發基礎 11 併發 容器
要實現乙個執行緒安全的佇列有兩個方式 一種是使用阻塞演算法,另一種是使用非阻塞演算法。阻塞演算法 使用阻塞演算法的佇列可以用乙個鎖 入隊和出隊同一把鎖 或兩把鎖 入隊和出隊用不同的鎖 來實現。非阻塞的實現方式則可以使用迴圈cas的方式來實現。concurrentlinkedqueue非阻塞執行緒安全...
事務併發 併發控制(加鎖)
事務處理中的併發控制 1.併發操作 資料庫是乙個共享資源,允許多個使用者程式並行地訪問資料庫,所以當多個使用者併發地訪問同一資料,就可能出現資料的不一致性。例如 假設有兩個事務 t1 和 t2 它們都需要讀出並修改資料 a 其執 況如下所示 執行順序 1 2 3 4 5 6 事務t1 讀aa a 1...