什么是Rollback Segment(已truncate和delete 命令為例)?


Rollback Segments是在你數據庫中的一些存儲空間,它用來臨時的保存當數據庫數據發生改變時的先前值,Rollback Segment主要有兩個目的:

1. 如果因為某種原因或者其他用用戶想要通過ROLLBACK聲明來取消一個人的數據操作,數據就會復原到之前為改變時的值。這種情況只在transaction的過程中有效,如果用戶執行了COMMIT命令,那么ROLLBACK SEGMENT里面的值就會標識為失效的,數據改變就將永久化。
2. 另一個目的是當有並發的session訪問了一個數據值改變但事務還沒有提交的表。如果一個SELECT語句開始讀取一個表同時一個事務也在修改這個表的值,那么修改前的值就會保存到rollback segment里面,SELECT語句也是從ROLLBACK SEGMENT里面讀取表的值。

 

 比較truncate和delete 命令:

兩者都可以用來刪除表中所有的記錄。區別在於:truncate是DDL操作,它移動HWK,不需要 rollback segment(執行完沒有提交或者回滾),立即釋放空間。而Delete是DML操作, 需要rollback segment(執行完有提交或者回滾),不釋放空間,且花費較長時間;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM