【效能優化】消除行連結和行遷移的思路和方法
關於行連結和行遷移的概念請參考文章《【概念】行連結和行遷移的概念、模擬及甄別》
(http://space.itpub.net/519536/viewspace-624408)。
眾所周知,行連結和行遷移會導致系統的查詢效率降低,因為在這種情況下查詢需要掃描更多的資料塊才能得到所需的資訊。本文嘗試給出消除行連結和行遷移的思路和方法。
1.消除行連結和行遷移思路
1)針對發生行連結和行遷移的資料行進行重新整理;
2)將資料遷移到大尺寸資料塊表空間中存放。
2.消除行連結和行遷移方法
假設T表出現行連結、行遷移問題。
1)針對發生行連結和行遷移的資料行進行重新整理的方法
(1)使用CTAS(Create Table As Select)方法將出現行連結和行遷移的資料彙總在表T_Temp中。具體命令參考如下:
SQL> create table T_Temp as select * from T where rowid in (select head_rowid from chained_rows where table_name='T');
(2)刪除T表中發生行連結行遷移的資料
SQL> delete from T where rowid in (select head_rowid from chained_rows where table_name='T');
(3)將表T_Temp中存放的資料插回到T表
SQL> insert into T select * from T_Temp;
(4)刪除表T_Temp
SQL> drop table T_Temp purge;
通過這麼一系列的維護,行連結和行遷移現象將會明顯減少或消失(如果不存在一個資料塊存放不下一行資料的情況)。
2)將資料遷移到大尺寸資料塊表空間中存放
如果存在一個資料塊存放不下一行資料的情況,我們需要通過建立大尺寸資料塊表空間,然後將表移動到新表空間上存放的方法來解決。
(1)建立大尺寸資料塊表空間
有關大尺寸資料塊表空間的建立請參見文章《【TABLESPACE】建立非標準塊大小(標準塊8K)表空間》(http://space.itpub.net/519536/viewspace-668281)
SQL> create tablespace TBS_16K datafile '/u01/app/oracle/oradata/ora10g/DATA01_01.dbf' size 256M uniform. size 4M blocksize 16K;
(2)將表T移動到新建的表空間上
SQL> alter table T move TBS_16K;
3.小結
在OLTP系統中出現行連結和行遷移的可能性比較高,我們可以使用文中介紹的方法定期對這些資料進行調整,防止系統出現效能問題。
Good luck.
secooler
11.04.28
-- The End --
(http://space.itpub.net/519536/viewspace-624408)。
眾所周知,行連結和行遷移會導致系統的查詢效率降低,因為在這種情況下查詢需要掃描更多的資料塊才能得到所需的資訊。本文嘗試給出消除行連結和行遷移的思路和方法。
1.消除行連結和行遷移思路
1)針對發生行連結和行遷移的資料行進行重新整理;
2)將資料遷移到大尺寸資料塊表空間中存放。
2.消除行連結和行遷移方法
假設T表出現行連結、行遷移問題。
1)針對發生行連結和行遷移的資料行進行重新整理的方法
(1)使用CTAS(Create Table As Select)方法將出現行連結和行遷移的資料彙總在表T_Temp中。具體命令參考如下:
SQL> create table T_Temp as select * from T where rowid in (select head_rowid from chained_rows where table_name='T');
(2)刪除T表中發生行連結行遷移的資料
SQL> delete from T where rowid in (select head_rowid from chained_rows where table_name='T');
(3)將表T_Temp中存放的資料插回到T表
SQL> insert into T select * from T_Temp;
(4)刪除表T_Temp
SQL> drop table T_Temp purge;
通過這麼一系列的維護,行連結和行遷移現象將會明顯減少或消失(如果不存在一個資料塊存放不下一行資料的情況)。
2)將資料遷移到大尺寸資料塊表空間中存放
如果存在一個資料塊存放不下一行資料的情況,我們需要通過建立大尺寸資料塊表空間,然後將表移動到新表空間上存放的方法來解決。
(1)建立大尺寸資料塊表空間
有關大尺寸資料塊表空間的建立請參見文章《【TABLESPACE】建立非標準塊大小(標準塊8K)表空間》(http://space.itpub.net/519536/viewspace-668281)
SQL> create tablespace TBS_16K datafile '/u01/app/oracle/oradata/ora10g/DATA01_01.dbf' size 256M uniform. size 4M blocksize 16K;
(2)將表T移動到新建的表空間上
SQL> alter table T move TBS_16K;
3.小結
在OLTP系統中出現行連結和行遷移的可能性比較高,我們可以使用文中介紹的方法定期對這些資料進行調整,防止系統出現效能問題。
Good luck.
secooler
11.04.28
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-694047/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 行遷移 & 行連結的檢測與消除Oracle
- 模擬Oracle行遷移和行連結Oracle
- [20190120]行連結遷移與dml.txt
- [20180402]行連結行遷移與ITL槽6.txt
- Oracle資料庫中資料行遷移與行連結Oracle資料庫
- 記一次遷移和效能最佳化
- 前端效能優化 --- css和js的裝載與執行前端優化CSSJS
- 使用Mobilenet和Keras進行遷移學習!Keras遷移學習
- 設計思路-服務和庫平滑遷移
- 1.5 使用nvicat和kettle進行全量遷移
- PHP的效能優化方法總結PHP優化
- 總結前端效能優化的方法前端優化
- 使用cProfile針對回測進行效能分析,和結合說下提速思路
- JAVA效能優化思路探究Java優化
- 【Java效能優化思路方向】Java優化
- 如何用TRIZ的思路和方法,進行產品創新?
- 使用shouldComponentUpdate進行效能優化優化
- 容器和映象轉化、遷移方式【轉】
- 【效能】Oracle表並行對邏輯遷移後查詢效能的影響Oracle並行
- Oracle效能優化方法論的發展之六:基於流程分析和響應時間分析的效能優化方法論Oracle優化
- 掌握提高 Web 應用的效能的方法 之 優化 PHP 和 LaravelWeb優化PHPLaravel
- 測量、基線和效能優化之三:基於測量、基線和變化的效能優化優化
- Android效能優化——效能優化的難題總結Android優化
- Java 效能優化之——效能優化的過程方法與求職面經總結Java優化求職
- Cookbook:優化 Vue 元件的執行時效能優化Vue元件
- Java 執行緒與同步的效能優化Java執行緒優化
- 遷移執行緒migration執行緒
- gitlab的遷移和升級Gitlab
- 系統架構效能優化思路架構優化
- MySQL-效能優化-索引和查詢優化MySql優化索引
- 企業級資料倉儲遷移工藝和方法論總結
- 線上redis遷移思路Redis
- 【譯】Google - 使用 webpack 進行 web 效能優化(三):監控和分析應用GoWeb優化
- 移動端 CPU 的深度學習模型推理效能優化——NCHW44 和 Record 原理方法詳解深度學習模型優化
- 測量、基線和效能優化之三:基於測量、基線和變化的效能優化v優化
- 在react專案中使用shouldComponentUpdate方法進行元件效能優化React元件優化
- 從 Oracle 到 TiDB,全鏈路資料遷移平臺核心能力和杭州銀行遷移實踐OracleTiDB
- React 的行內函數和效能React函數
- 資料結構--單連結串列的建立和遍歷(程式碼優化)資料結構優化