行遷移和行連結
row migration和row chaining
oracle block由三個部分組成,header,free space,data
資料塊頭head:主要包含資料塊地址的一些基本資訊和段的型別,以及表和包含有資料的實際行的地址。
自由空間free space:是指可以為以後的更新和插入操作分配的空間,其大小受pctfree和pctused兩個引數影響。
實際資料data:是指在行記憶體儲的實際資料。
當建立或者更改任何表和索引的時候,oracle在空間控制方面使用兩個儲存引數:
pctfree:為將來更新已經存在的資料預留空間的百分比。
pctused:用於為插入一新行資料的最小空間的百分比。這個值決定了塊的可用狀態。可用的塊是可以執行插入的塊,不可用狀態的塊只能執行行刪除和修改,可用狀態的塊被放在freelist中。
當表中的資料不能在一個資料block中放入的時候,就會發生行連結和行遷移。
row migration:當一行記錄初始可以儲存在一個block中,由於更新導致行長增加了,而block的自由空間已經完全滿了,就會產生行遷移。由於表的pctfree引數設定太小,而導致沒有空間容納更新的記錄,可以調整和控制清除的。
row chaining:第一次插入資料是,如果一個block不能存放一樣記錄,oracle將使用這個段中其他block儲存,行連結發生在比較大的行上,例如行上有long、long raw、lob等資料型別的欄位,這種情況行連結不可避免的產生。主要由於資料庫的db_block_size不夠大,只有增大db_block_size沒有任何辦法。一般在建庫初期設定好,否則沒有太多可以調整的地方。
監測方法:
利用oracle資料庫自身提供的指令碼utlchain.sql生成chained_rows表,然後利用
analyze table table_name list chained rows into chained_rows命令逐個分析表,將分析結果存入chained_rows中。
清除方法:
對於行遷移一般分兩步,控制行遷移的增長,使其不再增多;清除以前存在的行遷移。
確定pctfree引數的大小,有兩種方法:
1、利用公式來設定pctfree的大小。
analyze table table_name estimate statistics命令來分析要修改pctfree的表,然後檢視user_tables中的avg_row_len列值,avg_row_len1,然後大量對錶操作,執行上面的命令得到avg_row_len2,然後用公式:
100*(avg_row_len2-avg_row_len1)/(avg_row_len2-avg_row_len1+原始avg_row_len)
2、差分微調的方法,一點一點增大,每次不要超過5%,然後使用analyze table table_name list chained rows into chained_rows命令分析每次所有的情況,不要調的過大,一般在40%以下就可以了。
oracle block由三個部分組成,header,free space,data
資料塊頭head:主要包含資料塊地址的一些基本資訊和段的型別,以及表和包含有資料的實際行的地址。
自由空間free space:是指可以為以後的更新和插入操作分配的空間,其大小受pctfree和pctused兩個引數影響。
實際資料data:是指在行記憶體儲的實際資料。
當建立或者更改任何表和索引的時候,oracle在空間控制方面使用兩個儲存引數:
pctfree:為將來更新已經存在的資料預留空間的百分比。
pctused:用於為插入一新行資料的最小空間的百分比。這個值決定了塊的可用狀態。可用的塊是可以執行插入的塊,不可用狀態的塊只能執行行刪除和修改,可用狀態的塊被放在freelist中。
當表中的資料不能在一個資料block中放入的時候,就會發生行連結和行遷移。
row migration:當一行記錄初始可以儲存在一個block中,由於更新導致行長增加了,而block的自由空間已經完全滿了,就會產生行遷移。由於表的pctfree引數設定太小,而導致沒有空間容納更新的記錄,可以調整和控制清除的。
row chaining:第一次插入資料是,如果一個block不能存放一樣記錄,oracle將使用這個段中其他block儲存,行連結發生在比較大的行上,例如行上有long、long raw、lob等資料型別的欄位,這種情況行連結不可避免的產生。主要由於資料庫的db_block_size不夠大,只有增大db_block_size沒有任何辦法。一般在建庫初期設定好,否則沒有太多可以調整的地方。
監測方法:
利用oracle資料庫自身提供的指令碼utlchain.sql生成chained_rows表,然後利用
analyze table table_name list chained rows into chained_rows命令逐個分析表,將分析結果存入chained_rows中。
清除方法:
對於行遷移一般分兩步,控制行遷移的增長,使其不再增多;清除以前存在的行遷移。
確定pctfree引數的大小,有兩種方法:
1、利用公式來設定pctfree的大小。
analyze table table_name estimate statistics命令來分析要修改pctfree的表,然後檢視user_tables中的avg_row_len列值,avg_row_len1,然後大量對錶操作,執行上面的命令得到avg_row_len2,然後用公式:
100*(avg_row_len2-avg_row_len1)/(avg_row_len2-avg_row_len1+原始avg_row_len)
2、差分微調的方法,一點一點增大,每次不要超過5%,然後使用analyze table table_name list chained rows into chained_rows命令分析每次所有的情況,不要調的過大,一般在40%以下就可以了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8570952/viewspace-713655/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 清除行遷移和行連結
- 如何消除行連結和行遷移
- 關於行連結和行遷移和消除
- 模擬Oracle行遷移和行連結Oracle
- 行遷移和行連結的檢測
- 排除表中的行連結和行遷移
- 行遷移_行連結的介紹
- Row Migration and Row Chaining(行遷移和行連結)AI
- pctused, pctfree, pctincrease , 行遷移 & 行連結
- 【效能優化】消除行連結和行遷移的思路和方法優化
- 【備份恢復】行遷移與行連結
- 【效能最佳化】消除行連結和行遷移的思路和方法
- 【轉載】行遷移和行連結(row chaining or row migration)AI
- 【概念】行連結和行遷移的概念、模擬及甄別
- 【轉】【效能最佳化】消除行連結和行遷移的思路和方法
- Oracle 行遷移 & 行連結的檢測與消除Oracle
- Oracle中行遷移和行連結的清除及檢測Oracle
- Oracle資料庫中資料行遷移與行連結Oracle資料庫
- 行連結(Row chaining)和行遷移(Row Migration)的讀書筆記AI筆記
- [20160726]行連結行遷移與ITL槽.txt
- [20160729]行連結行遷移與ITL槽4.txt
- [20160727]行連結行遷移與ITL槽2.txt
- [20160728]]行連結行遷移與ITL槽3.txt
- 行連結與行遷移, LOB欄位的儲存及效能影響
- Oracle資料庫關於錶行連線和行遷移處理方案Oracle資料庫
- [20180402]行連結行遷移與ITL槽6.txt
- 簡單瞭解 oracle update 原理(測試)、 行遷移/行連結基本認識Oracle
- 高水位線、行遷移行連結
- 查詢行遷移及消除行遷移(chained rows)AI
- 關於Oracle資料庫中行遷移/行連結的問題Oracle資料庫
- [20121116]通過bbed觀察行連結與行遷移.txt
- oracle11g_如何模擬產生行連結或行遷移chained_rowsOracleAI
- 行遷移測試
- 行遷移(鏈化行)問題
- [20190120]行連結遷移與dml.txt
- Oracle行遷移實驗Oracle
- 清除行遷移的例子
- 1.5 使用nvicat和kettle進行全量遷移