mysql update 行迁移_Oracle行迁移和行链接详解
Oracle會將整行的數據遷移到一個新的數據塊上,而將該行原先的空間只放一個指針,指向該行的新的位置,并且該行原先空間的剩余空
定義:
行遷移:因為update、將行變長、原來的塊已經放不下了、行被挪進新塊、
行鏈接:行一開始就太大、比如你插入了1w個字節的行、必須要分兩個塊存放、
由此、行變長的時間先后可作為判斷依據
產生場景:
行遷移
Oracle會將整行的數據遷移到一個新的數據塊上,而將該行原先的空間只放一個指針,指向該行的新的位置,并且該行原先空間的剩余空間不再被數據庫使用,這些剩余的空間我們將其稱之為空洞,這就是產生表碎片的主要原因,表碎片基本上也是不可避免的,但是我們可以將其降到一個我們可以接受的程度。注意,即使發生了行遷移,發生了行遷移的行的rowid 還是不會變化,這也是行遷移會引起數據庫I/O性能降低的原因。
行鏈接
oracle會使用與該塊鏈接的一塊或多塊數據塊來容納該行的數據。行連接經常在插入比較大的行時才會發生,如包含long, long row, lob等類型的數據。在這些情況下行鏈接是不可避免的。
影響DB performance的表現形式
讀一行要讀兩個塊,也就是要兩次邏輯讀
insert or update的性能比較差
利用索引查詢已鏈接或遷移的行的select語句的性能比較差,因為他們需要額外的I/O
如何才能檢測到行遷移與行鏈接
另外,,如何獲知行遷移(行鏈接)嚴重的表呢?
DBA_TABLES視圖的CHAINED_CNT列,該列有該表的鏈接行計數。
盡管行遷移與行鏈接是兩個不同的事情,但是在oracle內部,它們被當作一回事。所以當你檢測行遷移與行鏈接時,你應該仔細的分析當前你正在處理的是行遷移還是行鏈接。
本文原創發布php中文網,轉載請注明出處,感謝您的尊重!
總結
以上是生活随笔為你收集整理的mysql update 行迁移_Oracle行迁移和行链接详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为春季旗舰发布会新品价格汇总:最低只要
- 下一篇: 华为终端商用助力企业数字化转型 擎云新品