資料庫事務相關理論知識

2021-10-25 01:41:13 字數 2978 閱讀 3119

儲存結構

序列化排程

隔離級別及實現方式

併發控制

事務(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...