構成單一邏輯工做單元的操做集合稱做事務(transaction)。數據庫
即便有故障,數據庫系統也必須保證事務的正確執行--要麼執行整個事務,要麼屬於該事務的操做一個也不執行。編程
事務一般由高級數據操縱語言或編程語言經過JDBC或ODBC嵌入式數據庫訪問書寫的用戶程序的執行所引發。併發
四大特性:原子性、隔離性、一致性、持久性編程語言
原子性:若是一個事務開始執行,可是因爲某些緣由失敗,則事務對數據庫形成的任何可能的修改都要撤銷。不管事務自己是否失敗,或者操做系統崩潰,或者計算機中止運行,這項操做都要成立。操作系統
隔離性:數據庫系統必須採起特殊處理來確保事務正常執行而不被來自併發執行的數據庫語句所幹擾。事務
持久性:即便系統崩潰後事務的操做也必須是永久的。內存
一致性:隔離執行事務時保持數據庫的一致性。ci
ACID特性:Atomicity, Consistency, Isolation, Durabilityit
易失性存儲器:易失性存儲器中的信息一般在系統崩潰後不會倖存。這種存儲器的例子包括主存儲器和高速緩衝存儲器。易失性存儲器的訪問很是快,一方面是由於內存訪問自己的速度,另外一方面是由於能夠直接訪問易失性存儲器中的任何數據項。io
非易失性存儲器:非易失性存儲器會在系統崩潰後倖存。非易失性存儲器的例子包括用於在線存儲的二級存儲設備(如磁盤和閃存),以及用於存檔存儲的三級存儲設備(如光介質和磁帶)。
穩定性存儲器:永遠不會丟失。
事務的狀態:
活動的(active):初始狀態,事務執行時處於這個狀態。
部分提交的(partially committed):最後一條語句執行後。
失敗的(failed):發現正常的執行不能繼續後。
停止的(aborted):事務回滾而且數據庫已恢復到事務開始執行前的狀態後。
提交的(committed):成功完成後。
可恢復性調度知足:對於每隊事務Ti和Tj,若是Tj讀取了以前有Ti所寫的數據項,則Ti先於Tj提交。
無級聯調度知足:對於每隊事務Ti和Tj,若是Tj讀取了先前由Ti所寫的數據項,則Ti必須在Tj這一讀操做前提交。
兩階段封鎖協議:一階段只獲取鎖不釋放鎖;另外一階段只釋放鎖不獲取鎖。
共享鎖:許多事務能夠同時持有一個數據項的共享鎖
排它鎖:只有其餘事務在一個數據項上沒有持有鎖(不管共享鎖仍是排它鎖)時,一個事務才容許獲取排它鎖。
對於同一個數據項,系統持有兩個時間戳,最大讀時間戳和最大寫時間戳。
當不可能訪問時,違例事務將會停止,並會被分配給一個最新的時間戳從新開始。
每一個事務開始時持有其自身數據庫版本的副本,事務從這個私有數據庫版本中讀取數據,所以和其餘數據庫操做隔離開,更新只出如今私有數據庫操做中而不會影響實際數據庫。當事務提交時,和更新有關的信息會保存,被寫會真正的數據庫中。