1 行遷移的原因
啥是「行遷移」,oracle的資料按照塊儲存,如果一塊資料磁碟空間無法儲存某個資料時(比如以前是1k,現在update到2k,而當前塊的空閒空間不足1k),則會將新的資料儲存到另外乙個新的塊裡,然後在以前的塊儲存乙個新位置的位址連線。
比如[img]
資料都儲存在乙個塊裡面,中間有2塊的空閒空間,現在第四行資料要擴容。發現單塊的空閒空間不足,則評估合併的空閒空間是否滿足
[img]
評估合併後的空閒空間依然不滿足空間要求,則此時發生「行遷移」
[img]
在乙個新的塊儲存了新的第四行資料,然後在原始塊儲存了新位址的連線。這就是行遷移的過程。
2 行遷移有什麼影響呢?
如果你通過乙個索引來讀這一行,索引會指向原來的塊,那個塊再指向這個新塊。要得到具體的行資料,一般並不是執行兩個左右的i/o 就可以得到行資料。單獨來看,這不是大問題,甚至根本注意不到。不過,如果這種行所佔的比例相當大,而且有大量使用者在訪問這些行,你就會注意到這種***了。訪問這些資料的速度開始變慢(額外的i/o 以及與i/o 相關的閂定都會增加訪問時間),緩衝區快取的效率開始下降(需要快取兩個塊,而如果行沒有遷移就只需要快取乙個塊),另外表的大小好複雜性都有所增加。由於這些原因,你可能不希望遷移行。
3 總結
行遷移不能避免,增加每個塊的大小可以減少行遷移的可能行,但也會造成更大的空間浪費。這個平衡點需要根據應用不同進行確定。
轉於:
Oracle學習筆記 簡單了解行遷移的影響
1 行遷移的原因 啥是 行遷移 oracle的資料按照塊儲存,如果一塊資料磁碟空間無法儲存某個資料時 比如以前是1k,現在update到2k,而當前塊的空閒空間不足1k 則會將新的資料儲存到另外乙個新的塊裡,然後在以前的塊儲存乙個新位置的位址連線。比如資料都儲存在乙個塊裡面,中間有2塊的空閒空間,現...
檢查行遷移的方法
檢查行遷移的方法 1 執行 oracle home rdbms admin utlchain.sql 2 analyze table table name list chained rows into chained rows 3 select from chained rows where tab...
檢查行遷移的方法
檢查行遷移的方法 1 執行 oracle home rdbms admin utlchain.sql 2 analyze table table name list chained rows into chained rows 3 select from chained rows where tab...