行遷移不能避免,增加每個(gè)塊的大小可以減少行遷移的可能行,但也會(huì)造成更大的空間浪費(fèi)。這個(gè)平衡點(diǎn)需要根據(jù)應(yīng)用不同進(jìn)行確定。
“行遷移”,Oracle的數(shù)據(jù)按照塊保存,如果一塊數(shù)據(jù)磁盤空間無(wú)法保存某個(gè)數(shù)據(jù)時(shí)(比如以前是1K,現(xiàn)在update到2K,而當(dāng)前塊的空閑空間不足1K),則會(huì)將新的數(shù)據(jù)保存到另外一個(gè)新的塊里,然后在以前的塊保存一個(gè)新位置的地址連接。
比如
數(shù)據(jù)都保存在一個(gè)塊里面,中間有2塊的空閑空間,現(xiàn)在第四行數(shù)據(jù)要擴(kuò)容。發(fā)現(xiàn)單塊的空閑空間不足,則評(píng)估合并的空閑空間是否滿足
評(píng)估合并后的空閑空間依然不滿足空間要求,則此時(shí)發(fā)生“行遷移”
在一個(gè)新的塊保存了新的第四行數(shù)據(jù),然后在原始?jí)K保存了新地址的連接。這就是行遷移的過(guò)程。
2 行遷移有什么影響呢?
如果你通過(guò)一個(gè)索引來(lái)讀這一行,索引會(huì)指向原來(lái)的塊,那個(gè)塊再指向這個(gè)新塊。要得到具體的行數(shù)據(jù),一般并不是執(zhí)行兩個(gè)左右的I/O 就可以得到行數(shù)據(jù)。單獨(dú)來(lái)看,這不是大問(wèn)題,甚至根本注意不到。不過(guò),如果這種行所占的比例相當(dāng)大,而且有大量用戶在訪問(wèn)這些行,你就會(huì)注意到這種副作用了。訪問(wèn)這些數(shù)據(jù)的速度開始變慢(額外的I/O 以及與I/O 相關(guān)的閂定都會(huì)增加訪問(wèn)時(shí)間),緩沖區(qū)緩存的效率開始下降(需要緩存兩個(gè)塊,而如果行沒(méi)有遷移就只需要緩存一個(gè)塊),另外表的大小好復(fù)雜性都有所增加。由于這些原因,你可能不希望遷移行。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com