事務管理基礎:數據庫的併發控制相關知識筆記

 

1、併發操作的概念介紹

併發操作主要是指在多用戶共享的系統當中,可能存在很多用戶同時對同一個數據進行操作。併發操作會造成丟失更新、不可重複讀、讀髒數據。主要原因是事務的併發操作破壞了事務的隔離性。

2、事務調度相關知識

事務調度主要有串行調度、併發調度、可恢復調度三種。

2.1 串行調度

串行調度是指多個事務依次串行執行,並且只有當一個事務的所有操作都執行完成後纔可以執行另一個事務的所有操作。

特點:串行調度和執行順序無關,執行的結果都是穩定和正確的,對於N個事務,最多有N!中正確的串行調度。

2.2 併發調度 

併發調度是指利用分時的方法同時處理多個事務。針對N個事務進行併發調度,所產生的調度方案遠大於N!個,並且併發調度的結果很有可能是錯誤的。只有併發調度的結果和串行調度的結果一致,才說明併發調度的結果是正確的。

2.3 可恢復調度 

如果事務T1提交失敗,則應當撤銷T1的影響以保證其原子性。在允許併發執行的系統中,還必須保證依賴T1的任何事務T2也中止。比如T2要讀寫T1寫的數據,則稱爲T2依賴於T1。

可恢復調度應滿足:如果事務T2要讀取事務T1寫的數據時,事務T1必須要先於T2提交事務。這樣T2事務讀取的數據纔是真實可靠的數據。

3、併發操作帶來的危害

3.1 丟失修改 

丟失修改主要是指多個事務同時對數據庫更新操作,正常情況下應該都執行情況,但會因爲併發操作,造成其中某些事務的更新操作丟失。比如12306售票系統,同時售出了兩張火車票,但數據庫中票數只減少了一張,從而造成了數據的不一致。

丟失修改破壞了事務的隔離性。

3.2 不可重複讀 

比如事務A首先讀取了一條數據,然後執行邏輯的時候,事務B將這條數據改變了,然後事務A再次讀取的時候,發現數據不匹配了,這就是所謂的不可重複讀了。

通俗來說,當前事務先進行了一次數據讀取,然後再次讀取到的數據是別的事務修改成功的數據,導致兩次讀取到的數據不匹配,也就照應了不可重複讀的語義。

不可重複讀干擾了事務的獨立性。

3.3 讀髒數據 

髒讀,其實就是讀到了其他的事務回滾前的髒數據。比如事務B執行過程中修改了數據X,在未提交前,事務A讀取了X,而事務B卻回滾了,這樣事務A就形成了髒讀。

簡單來說,當前事務讀到的數據是別的事務想要修改成爲的但是沒有修改成功的數據。

讀髒數據時事務隔離性的破壞而破壞了數據的一致性。

 

IT技術分享社區

個人博客網站:https://programmerblog.xyz

文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章