1 行遷移的原因
啥是「行遷移」,oracle的資料按照塊儲存,如果一塊資料磁碟空間無法儲存某個資料時(比如以前是1k,現在update到2k,而當前塊的空閒空間不足1k),則會將新的資料儲存到另外乙個新的塊裡,然後在以前的塊儲存乙個新位置的位址連線。
比如資料都儲存在乙個塊裡面,中間有2塊的空閒空間,現在第四行資料要擴容。發現單塊的空閒空間不足,則評估合併的空閒空間是否滿足
評估合併後的空閒空間依然不滿足空間要求,則此時發生「行遷移」
在乙個新的塊儲存了新的第四行資料,然後在原始塊儲存了新位址的連線。這就是行遷移的過程。
2 行遷移有什麼影響呢?
如果你通過乙個索引來讀這一行,索引會指向原來的塊,那個塊再指向這個新塊。要得到具體的行資料,一般並不是執行兩個左右的i/o 就可以得到行資料。單獨來看,這不是大問題,甚至根本注意不到。不過,如果這種行所佔的比例相當大,而且有大量使用者在訪問這些行,你就會注意到這種***了。訪問這些資料的速度開始變慢(額外的i/o 以及與i/o 相關的閂定都會增加訪問時間),緩衝區快取的效率開始下降(需要快取兩個塊,而如果行沒有遷移就只需要快取乙個塊),另外表的大小好複雜性都有所增加。由於這些原因,你可能不希望遷移行。
3 總結
行遷移不能避免,增加每個塊的大小可以減少行遷移的可能行,但也會造成更大的空間浪費。這個平衡點需要根據應用不同進行確定。
簡單了解行遷移的影響
1 行遷移的原因 啥是 行遷移 oracle的資料按照塊儲存,如果一塊資料磁碟空間無法儲存某個資料時 比如以前是1k,現在update到2k,而當前塊的空閒空間不足1k 則會將新的資料儲存到另外乙個新的塊裡,然後在以前的塊儲存乙個新位置的位址連線。比如 img 資料都儲存在乙個塊裡面,中間有2塊的空...
Oracle學習筆記20150906序列
1.oracle中用sequence 序列 來實現自動增長列.序列由使用者建立資料庫物件,並可有多個使用者物件共享,一般用於主鍵或者唯一列.2.create sequence myseq序列名 start with 1從1開始遞增 increment by 1每次遞增1 maxvalue 99 no...
Oracle學習筆記 10 序列
當在開發中,我們查詢到一組資料,希望這組資料帶有一列自增的編號時。在mysql資料庫中,字段可以設定一種型別,auto increment 自增 當乙個字段設定 auto increment 型別後,給定乙個初始的數字,之後每加入一條新的記錄,該條記錄的這個欄位的值都會在原來的基礎上加1。這個屬性也...