儲存結構
序列化排程
隔離級別及實現方式
併發控制
事務(transaction)是構成單一邏輯工作單元的操作集合。是訪問並可能更新各種資料項的乙個程式執行單元。
原子性(atomicity)
事務操作在資料庫中要麼全部正確反映出來,要麼完全不反映。
一致性(consistency)
隔離執行事務時,保持資料庫一致性。
隔離性(isolation)
事務併發執行時,每個事物感覺不到其他事務在併發執行。
永續性(duration)
乙個事務成功完成後,它對資料庫的改變必須是永久的。
穩定儲存器:
資訊永遠不會丟失
非易失儲存器:
系統奔潰後還存在(磁碟)
易失儲存器:
系統奔潰後丟失(記憶體)
衝突排程:
當兩個事務i,j在相同的資料操作,二者至少乙個含write指令,那麼i和j是衝突的,二者交換屬於衝突排程。
等價衝突:
排程s進過一系列非衝突指令交換成s』,稱s和s』是等價衝突的。
衝突可序列化:
如果排程s和乙個序列排程是衝突等價的,那麼s是衝突可序列化的。
優先圖:
如果t1,t2的讀寫、寫讀、寫寫事務都是t1在前,t2在後;那麼t1–>t2。如果優先圖有環,那就不是衝突可序列化的,反之則是。
可恢復排程:
如果t1讀取了t2所寫的資料,那麼t2應該先於t1提交,否則不滿足可恢復排程。
無級聯排程:
單個事務故障導致一系列事務回滾稱為級聯回滾,排程避免無級回滾稱為無級聯排程。
讀未提交
允許事務讀到未提交的資料,會發生髒讀(讀取到沒有提交的資料)
讀已提交
只允許讀已提交的資料,會發生不可重複讀(事務兩次讀取乙個資料,中間有乙個事務更新了資料導致兩次讀取不一樣)
可重複讀
只允許讀取已提交的資料,並且兩次讀取同一資料期間不允許其他事務更新該資料;會發生幻讀(事務兩次讀取乙個資料集,乙個事務做了新增操作,結果第二次讀取多了幾條資料)
可序列化
保證序列化排程
實現方式
鎖:
共享鎖:讀事務
排它鎖:寫事務
時間戳:
按照事務時間戳來序列訪問資料項。
多版本和快照隔離(si):
事務通過快照運算元據,提交後才會將更新寫入資料庫。
分類:共享鎖、排它鎖,可以通過公升級降級轉換
兩階段封鎖協議:增長階段只能獲得鎖,縮減階段只能釋放鎖
嚴格兩階段封鎖協議:事務持有的所有排它鎖必須在事務提交後釋放
強兩階段封鎖協議:事務提交前不能釋放任何鎖
實現方式:鎖表(排隊)和圖協議(必須獲得父鎖才能獲得子鎖)
死鎖處理:
預防:
1、一次全部封鎖,給資料加次序;
2、搶占與事務回滾:wait-die機制,t1申請的資料項被t2持有,t1時間戳較小(老),則t1等待,否則t1回滾,即先來的可以等後來的釋放鎖,後來的發現沒鎖拿就死亡;wound-wait機制,先來者發現鎖被後來者持有,就搶過來並且殺死後來者事務,後來者發現鎖被先來者持有就等待。
3、超時:等待時間超過一段時間後回滾,但是應用有限
檢測:通過等待圖有無環來判斷,t1–>t2代表t1等待t2釋放鎖
恢復:
1.選擇犧牲者:回滾最小代價事務,通過時長,資料項,涉及其他事務等等因素判斷
2.回滾:徹底回滾或者部分回滾
3.餓死:設定回滾次數上限,防止某一事務一直回滾被餓死
多粒度:
方便給資料集加鎖,不用乙個乙個去加,對乙個資料顯式加鎖,其他依賴的資料會被隱式加鎖。加鎖需要遵循多粒度封鎖協議,根據樹狀圖依次加鎖(is s ix x six)
時間戳小代表事務靠前,大的代表事務靠後。
時間戳排序協議:
1.假設事務t1發出read(q),如果ts(t1)=w-timestamp(q),則執行更新r-timestamp為最大值。
2.假設事務t1發出write(q),如果t1(t1)三個階段:
讀階段(start):資料項值被讀入並儲存在t1的區域性變數中。
有效性檢查階段(validation):判斷是否可以執行write操作
寫階段(finish):臨時的區域性變數值被複製到資料庫中
有效性測試:
事務被要求滿足ts(t1)事務write(q)操作可以建立乙個q的新版本,當發出其他事務發出read(q)操作時,可以選擇乙個版本讀取以保證序列性。
時間戳排序
每個資料項包含三個資料字段:content、w-timestamp、r-timestamp
qk寫時間戳小於等於ts(t1)的最大寫時間戳:1.如果事務t1發出read(q),則返回qk的內容。2.如果事務t1發出write(q),且若ts(t1)r-timestamp(q),則建立新版本。簡而言之,先於回滾同時覆蓋後於新建。
兩階段封鎖
資料項每個按本有乙個時間戳(ts-counter)。唯讀事務遵循時間戳排序協議,返回小於該事務最大時間戳版本內容。更新事務先獲取排它鎖,再建立乙個新版本,新版本時間戳為∞,等更新完成後,時間戳變為ts-counter+1
資料庫相關理論知識整理複習
database management system dbms 資料庫管理系統是乙個為儲存和管理資料庫的軟體包。1 從資料模型的發展來看 2 從體系結構的發展來看 3 從應用領域的拓展來看 工程資料庫 cad,cam 演繹資料庫 知識庫,知識管理,需要推理過程 時態資料庫 空間資料庫 資料倉儲 資料...
mysql理論知識 MySQL資料庫理論知識
1 mysql連線方式 1 tcp ip 需要三次握手建立連線 mysql uroot p123 h10.0.0.51 mysql uroot p123 h127.0.0.1 2 socket mysql預設使用socket連線 socket預設路徑 tmp mysql.sock,可以通過編譯引數更...
JDBC連線資料庫理論知識
jdbc連線資料庫用到的類有哪些 drivermanage 管理jdbc驅動的服務類 connection 代表資料庫連線物件 statement 用於執行sql語句的api介面 preparedstatement 預編譯的statement物件 resultset 儲存查詢語句返回的結果。stat...