insert基本只有redo,delete只有undo,而update時要記錄undo+redo。
所以當update所有的項時,記錄的undo+redo的量與對相應行的delete+insert產生的undo+redo的量一樣多。
所以某些時候update比delete更慢也正常了
undo表空間與redo日誌檔案在oracle中的作用非常重要,本文重點介紹undo回滾段的作用與特點,同時簡單介紹undo與redo的區別和各自己的作用:
一.undo中資料的特點:
1。是資料修改前的備份,主要是保證使用者的讀一致性
2. 在事務修改資料時產生
3。至少儲存到事務結束
二。undo資料的作用:
1.回滾(rollback)操作
2.實現讀一致性與閃回查詢
3.從失敗的事務中還原資料
4. 非正常停機後的例項恢復
三.undo回滾段的特點:
1.回滾段是由例項自動建立用於支援事務執行的專用段,同樣是區和塊組成,回滾頂會按實際需要自動進行增長或收縮,是一段可以給指定事務迴圈使用的儲存緩衝區。
2.每個事務只會使用乙個回滾段,乙個回滾段在同一時刻可能會服務於多個事務
3.當乙個事務開始的時候,會指定乙個回滾段,在事務進行的過程中,當資料被修改時,原始的資料會被複製到回滾段。
4。在回滾段中,事務會不斷填充盤區,直到事務結束或所有的空間被用完,如果當前的盤區不夠用,事務會在段中請求擴充套件下乙個盤區,如果所有已分配的盤區都被用完,事務會覆蓋最初的盤區或者在回滾段允許的情況下擴充套件新的盤區來使用.
5。回滾段存在於undo表空間中,在資料庫中可以存在多個undo表空間,但同一時刻只能使用乙個undo表空間。
四.回滾段中的資料型別:
回滾段中的資料主要分為以下三種:
1.uncommitted undo information; 未提交的回滾資料,該資料所關聯的事務並未提交,用於實現讀一致性,所以該資料不能被其它事務的資料所覆蓋
2.committed undo information;已經提交但未過期的回滾資料,該資料關聯的事務已經提交,但是仍受到undo retention引數保持時間的影響
3.expired undo information;事務已經提交,而且資料儲存時間已經超過undo retention引數指定的時間,屬於已經過期的資料
當回滾段滿了後,會優先覆蓋expired undo information,當過期資料空間用完後,會再覆蓋committed undo information的區域,這時undo retention引數所規定的保持時間會被破壞,uncommitted undo information的資料是不允許覆蓋的,如果要求提交的資料在undo retention引數規定的時間內不會被覆蓋,可以在undo表空間上指定retention guarantee,語法如下:
alter tablespace undotbs1 retention guarantee;
五。undo資料與redo資料的區別:
1.undo記錄資料修改之前的操作,redo記錄磁碟資料將要進行的操作.
2.undo用於資料的回滾操作,和實現一致性讀,redo用於前滾資料庫操作
3.undo儲存在回滾段裡,redo儲存在重做日誌檔案裡
4.undo用於在多使用者併發的系統裡保證一致性讀,redo用於防止資料丟失
六.與undo有關的相關引數
undo_management = auto 自動的undo表空間管理
undo_tablespace = undotbs1 設定undo表空間的名稱,可以存在多個undo表空間,但同時只能使用乙個
undo_retention = 900(秒) 設定快照儲存的最少時間,設定後在此時間段內仍有可能會被覆蓋
alter tablespace undo_ts retention guarantee; 強制所有快照必須儲存 undo_retention所規定的時間。
insert和select基本語法
insert into tbclass clsname clsteacher clsnumber values 17.net班 安飛 20 insert into tbclass clsteacher clsname clsnumber values 飛 哥 16.net 班 32 省略某些欄位的i...
ALTER和UPDATE的區別
update 用來更新表的資料 alter 用來更新表的結構 打個比方乙個表有多字段,字段裡面有資料 比作乙個樓裡有很多房間,房間裡面有家具 alter 是改房間,update 是改家具 用法,表名是 你家 在你家加個字段 廁所 就是alter table 你家add 廁所varchar 8 var...
Update 和FixedUpdate 的區別
update 和fixedupdate 的區別。共同特點 它們都是在更新時會被呼叫,並且會迴圈的呼叫。區別 update 會在每次渲染新的一幀時被呼叫。fixedupdate 會在每個固定的時間間隔被呼叫。那麼要是update 和fixedupdate 的時間間隔一樣,是不是就一樣呢?答案是不一定,...