標籤:丟失 串列 個數 語言 其他 恢複 撤銷 取數 包括
構成單一邏輯工作單元的操作集合稱作事務(transaction)。
即使有故障,資料庫系統也必須保證事務的正確執行--要麼執行整個事務,要麼屬於該事務的操作一個也不執行。
1. 事務概念
事務通常由進階資料操縱語言或程式設計語言通過JDBC或ODBC嵌入式資料庫訪問書寫的使用者程式的執行所引起。
四大特性:原子性、隔離性、一致性、持久性
原子性:如果一個事務開始執行,但是由於某些原因失敗,則事務對資料庫造成的任何可能的修改都要撤銷。無論事務本身是否失敗,或者作業系統崩潰,或者電腦停止運行,這項操作都要成立。
隔離性:資料庫系統必須採取特殊處理來確保事務正常執行而不被來自並發執行的資料庫語句所幹擾。
持久性:即使系統崩潰後事務的操作也必須是永久的。
一致性:隔離執行事務時保持資料庫的一致性。
ACID特性:Atomicity, Consistency, Isolation, Durability
2. 一個簡單的實物模型3. 儲存結構
易失性儲存空間:易失性儲存空間中的資訊通常在系統崩潰後不會倖存。這種儲存空間的例子包括主儲存空間和高速緩衝儲存空間。易失性儲存空間的訪問非常快,一方面是因為記憶體訪問本身的速度,另一方面是因為可以直接存取易失性儲存空間中的任何資料項目。
非易失性儲存空間:非易失性儲存空間會在系統崩潰後倖存。非易失性儲存空間的例子包括用於線上儲存的二級存放裝置(如磁碟和快閃記憶體),以及用於存檔儲存的三級存放裝置(如光介質和磁帶)。
穩定性儲存空間:永遠不會丟失。
4. 事務原子性和持久性
事務的狀態:
活動的(active):初始狀態,事務執行時處於這個狀態。
部分提交的(partially committed):最後一條語句執行後。
失敗的(failed):發現正常的執行不能繼續後。
中止的(aborted):交易回復並且資料庫已恢複到事務開始執行前的狀態後。
提交的(committed):成功完成後。
5. 事務隔離性6. 可序列化7. 事務隔離性和原子性7.1 可恢複調度
可恢複性調度滿足:對於每隊事務Ti和Tj,如果Tj讀取了之前有Ti所寫的資料項目,則Ti先於Tj提交。
7.2 無級聯調度
無級聯調度滿足:對於每隊事務Ti和Tj,如果Tj讀取了先前由Ti所寫的資料項目,則Ti必須在Tj這一讀操作前提交。
8. 交易隔離等級9. 隔離等級的實現9.1 鎖
兩階段封鎖協議:一階段只擷取鎖不釋放鎖;另一階段只釋放鎖不擷取鎖。
共用鎖定:許多事務可以同時持有一個資料項目的共用鎖定
排它鎖:只有其他事務在一個資料項目上沒有持有鎖(無論共用鎖定還是排它鎖)時,一個事務才允許擷取排它鎖。
9.2 時間戳記
對於同一個資料項目,系統持有兩個時間戳記,最大讀時間戳記和最大寫時間戳記。
當不可能訪問時,違例事務將會中止,並會被分配給一個最新的時間戳記重新開始。
9.3 多版本和快照隔離
每個事務開始時持有其自身資料庫版本的副本,事務從這個私人資料庫版本中讀取資料,因此和其他資料庫操作隔離開,更新只出現在私人資料庫操作中而不會影響實際資料庫。當事務提交時,和更新有關的資訊會儲存,被寫會真正的資料庫中。
電腦科學叢書:資料庫系統概念 讀書筆記(十四)--事務