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(執行完有提交或者回滾),不釋放空間,且花費較長時間;


