一段不可分割的sql語句的集合,要麼全部發生,要麼全部不發生。
系統故障
系統停止運轉,要求系統重啟的事件
介質故障
登記日誌技術
通過日誌檔案來記錄每一事務隊資料庫的跟新活動,登記日誌需要滿足的條件
1.登記次序必須按照併發事務執行的時間順序
2.必須先寫日誌檔案,再寫資料庫。日誌檔案不要和資料庫存在同一塊物理磁碟上,需要定期跟換位置。
上面的問題中,某些redo操作可能是多餘的,因為某些跟新操作已經對資料庫造成了影響。我們引入檢查點技術,一點的時間間隔設定乙個檢查點。
1.正向掃瞄日誌檔案,找出已經執行過的事務,即含有start和commit記錄的日誌記錄,加入redo佇列。同時找出為執行成功的事務日誌記錄,即只有start的記錄,加入undo佇列2.正向掃瞄redo佇列裡的每個記錄,重現執行事務。
3.反向掃瞄undo佇列的每個記錄,撤銷更新操作,即delete做insert操作,update做delete操作,insert做delete操縱。
1.反向掃瞄日誌檔案,找到更新操作2.若遇到update操作,則將「前像」寫入資料庫;遇到insert操作,則刪除資料物件;若遇到delete操縱,則將資料物件插入資料庫中。
3.繼續反向掃瞄,找出跟新操作,執行同樣的處理,知道遇到事務的開始標記start.
利用後備副本和日誌檔案進行恢復
不同的事務隊對同一資料物件至少執行一次寫操作
如果有環則說明不可序列化。無環則進行拓撲排序得到可序列化排程。
是指乙個事務與其他事務實現隔離的程度,是事務可接受的資料不一致的程度。較低的隔離級別可以增加併發,但是資料出錯的風險就很高。
活鎖:兩個或者兩個以上的事務都在等待對方放鎖,結果就是任何永遠等待下去,這就叫死鎖。活鎖:類似與作業系統中的飢餓,某個事務永遠得不到資料物件。
事務和併發控制
事務就是使用者定義的乙個資料庫操作序列,這些操作要麼全做,要麼全不做,是乙個不可分割的工作單位。事物的acid特性 事務具有原子性,一致性,隔離性和永續性 原子性 表示事務中的操作是乙個原子操作,要麼全做,要麼全不做 一致性 表示資料庫必須從乙個一致狀態轉移到另乙個一致狀態,一致性是與原子性密切相關...
MySQL多事務併發控制
mysql的預設隔離級別是可重複讀。若兩個事務a和b操作同一資源,a和b都通過begin開啟事務後,若a只存在讀操作,則b可以對資料進行寫操作,且b的寫操作不會影響a的讀,即a每次讀到的內容都是一致的 就算b已經提交 若a進行了寫操作,則b的讀操作不受影響,但b的寫操作會被阻塞,直到a提交了事務或者...
mysql 併發控制及事務
實現的併發訪問的控制技術是基於鎖 鎖分為表級鎖和行級鎖,myisam儲存引擎不支援行級鎖 innodb支援表級鎖和行級鎖 鎖的分類有讀鎖和寫鎖,讀鎖也被稱為共享鎖,加讀鎖的時候其他的人可以讀 寫鎖也稱為獨佔鎖或排它鎖,乙個寫鎖會阻塞其他讀操作和寫操作 鎖還分為隱式鎖和顯式鎖,隱式鎖由儲存引擎自行管理...