1、
rollback
1、乙個事務開始,生成乙個事務
id(找事務
counter
)2、讀取系統事務表,找到乙個回滾段(找相對空閒的),
讀取回滾段的段頭塊
(段頭裡面有很多行,找到其中空閒的行,把事務id寫進去,寫進去之後乙個事務就開始了,乙個事務槽盛放乙個事務
id,也就是說乙個事務開始了需要找到事務槽把事務
id寫進去)和一些回滾頁(事務資料塊)(我要修改乙個資料行, 在資料行裡需要把事務
id寫進去,在後面找乙個
undo
塊盛放修改前的資料),rollpointer(回滾指標)指向盛放舊資料的最後乙個
undo
塊,最後乙個塊指向前乙個塊,都鏈起來。當回滾的時候,先找到最後乙個
undo
塊,依次往前逆著讀,把髒資料塊還原成原來的資料塊。
2、寫不阻塞讀
採用的是資料行的rollpointer指標,結合
undo
資料,讀取資料修改前的值,構造一致性讀,避免髒讀。
能夠避免髒讀,就不需要採用寫阻塞讀的方式來避免髒讀。
3、崩潰恢復(
redo
前滾,undo
回滾。未提交事務主動回滾,未提交事務資訊在事務槽裡寫著)
資料庫在執行期間,突然崩了,資料庫啟動之後,需要redo前滾,就會有很多未提交的事務也滾回來了,系統中存在很多未提交的事務,並且這些事務的會話斷了,不可能繼續完成了,就需要對未提交事務回滾了,所有的未提交事務的資訊都在事務槽裡面存著,讀取事務槽,把未提交事務回滾。
static的三個作用
static的三個作用 這個簡單的問題很少有人能回答完全。在c語言中,關鍵字static有三個明顯的作用 1 在函式體,乙個被宣告為靜態的變數在這一函式被呼叫過程中維持其值不變。2 在檔案內 但在函式體外 乙個被宣告為靜態的變數可以被檔案內所用函式訪問,但不能被檔案外其它函式訪問。它是乙個本地的全域...
轉 資料描述的三個領域
原博文出自於 感謝!現實世界是存在於人們頭腦之外的客觀世界,是客觀事物及其互相的聯絡。例如學校教學管理中涉及的學生管理 教師管理 課程管理。管理者要求 每個學期開學時製作學生選修課程情況表,內容包括學號 姓名 課程名 選修課類別 類別分為必修 選修 每個學期結束時製作學生選修課程成績表,內容包括學號...
Sevlet中的三個作用域
servlet 中常用來儲存資料的三大作用域 按照使用範圍從小到大排列為 三個作用域,下邊詳細介紹這三個作用域。存入資料的方法request.setattribute user user 這裡是把 user 放入到request 作用域中,key是 user,value 是user 此作用域儲存的資...