描述undo的三個作用

2022-05-08 09:39:11 字數 844 閱讀 7306

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 此作用域儲存的資...