索引對直接路徑載入的影響
TEST表大小1,984M
-----------表上無索引,每次操作前flush buffer cache
flush buffer cache
insert /*+ append */ into test1 select * from test;
19999996 rows created.
Elapsed: 00:01:19.06
flush buffer cache
create index tt1 on test1(object_id);
Index created.
Elapsed: 00:00:51.82
flush buffer cache
create index tt2 on test1(object_type);
Index created.
Elapsed: 00:00:55.21
總共耗時:79+52+55=186。
---------------表上存在兩個索引
flush buffer cache
insert /*+ append */ into test1 select * from test;
19999996 rows created.
Elapsed: 00:04:12.60
總共耗時:252秒
第一種方式比第二種方式快了66秒。
11GR2版本(之前的版本沒有測試),是在資料載入完成後,建立的索引。
因為在建立的過程中,透過指令碼@size檢視段的大小:
1)表段的大小,一直在增大,增大到1,984M後,不再增大。整個過程中,兩個索引段的大小沒有變化。說明表的載入跟索引的載入是分開的。
2)表載入完成後,索引段的大小開始增大,先是TT2索引大小增大,然後是TT1索引。
用@showlong指令碼檢視,載入資料的整個過程:
1)先是Table Scan: TEST.TEST: 36612 out of 382813 Blocks done
2)再是Sort/Merge: : 10765 out of 78629 Blocks done
3)最後是Sort Output: : 18293 out of 78601 Blocks done ,這個過程會出現兩次。因為是兩個索引。
SQL_ID MESSAGE TIME_REMAINING
------------------ -------------------------------------------------------------------------------- --------------
7dy0qdzzmq7k4 Sort Output: : 13678 out of 68976 Blocks done 28
------------------ -------------------------------------------------------------------------------- --------------
7dy0qdzzmq7k4 Sort Output: : 13678 out of 68976 Blocks done 28
過程1是掃描表。過程2說不清楚。過程三是建立索引過程中的排序。
測試中發現_sort_multiblock_read_count不再有用。
alter session set "_sort_multiblock_read_count"=128;
Session altered.
後臺觀察到的P3引數direct path read temp一直是31
裡面有一點需要思考:
我們最終的目的是想要把資料載入到表裡,表包含兩個索引。
第一種方式先載入了表資料後建立的索引
第二種方式在存在兩索引表上直接載入資料,但是我們透過一些手段發現,ORACLE其實也是先載入了資料再建立的索引。跟第一種似乎沒什麼區別。但是時間上是有明顯差異的。第一種比第一種快了不少。
實驗過程中我發現,第二種方式,雖然載入資料過程中,索引的大小不變,但是temp表空間的使用一直在增加,產生了兩個臨時段:
SID SPID USERNAME MACHINE LOGON_TIME PROGRAM EL_TIME
------- ---------- ------------ ------------------ ------------------- -------------------- -------------------------------------------
OPERATION_TYPE MB SQL_ID
---------------------------------------- -------------------------------------------- ------------------
SQL_TEXT
------------------------------------------------------------------------------------------------------------------------
2084 3959 TEST dba-service-12 2011-12-31 14:58:01 - 141(s)
12 (TNS V1-V3)
IDX MAINTENANCE (SOR 540(MB) 7dy0qdzzmq7k4
insert /*+ append */ into test1 select * from test
------- ---------- ------------ ------------------ ------------------- -------------------- -------------------------------------------
OPERATION_TYPE MB SQL_ID
---------------------------------------- -------------------------------------------- ------------------
SQL_TEXT
------------------------------------------------------------------------------------------------------------------------
2084 3959 TEST dba-service-12 2011-12-31 14:58:01 - 141(s)
12 (TNS V1-V3)
IDX MAINTENANCE (SOR 540(MB) 7dy0qdzzmq7k4
insert /*+ append */ into test1 select * from test
2084 3959 TEST dba-service-12 2011-12-31 14:58:01 - 141(s)
12 (TNS V1-V3)
IDX MAINTENANCE (SOR 629(MB) 7dy0qdzzmq7k4
insert /*+ append */ into test1 select * from test
12 (TNS V1-V3)
IDX MAINTENANCE (SOR 629(MB) 7dy0qdzzmq7k4
insert /*+ append */ into test1 select * from test
表資料載入完成後,開始讀取臨時段,建立索引
我個人的猜想第二種方式慢,主要是因為在載入表資料的過程中,需要對索引欄位存入臨時段,並且需要排序,並行的這兩個操作:載入資料+寫入臨時段. 影響最終的載入速度。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-714235/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle直接路徑載入Oracle
- 【Oracle】-【COMMIT對索引的影響】-從trace看COMMIT對索引的影響OracleMIT索引
- shrink 操作對索引的影響索引
- Update操作對索引的影響索引
- dex最佳化對Arouter查詢路徑的影響
- shrink 與rebuild對索引高度的影響對比Rebuild索引
- 【Oracle】-【ROWNUM與索引】-索引對ROWNUM檢索的影響Oracle索引
- delete語句對索引的影響之分析delete索引
- QT 檔案相對路徑載入QT
- 表資料的儲存對索引的影響索引
- 分割槽表的不同操作對索引的影響索引
- oracle點陣圖索引對DML操作的影響Oracle索引
- stopkey對索引掃描的影響測試TopK索引
- 索引及排序對執行計劃的影響索引排序
- CONTEXT索引對COMMIT操作的影響 (ZT)Context索引MIT
- 【Direct-Path】直接路徑載入提升插入效率及其自身限制
- 操作分割槽表對global和local索引的影響索引
- VMware 與 SmartX 超融合 I/O 路徑對比與效能影響解析
- 載入資料順序對HASH SORT CLUSTER效能影響
- Java工程路徑及相對路徑(轉載)Java
- 資料列not null對索引影響一例Null索引
- 16、MySQL Case-索引key對select count(*)的影響MySql索引
- oracle本地分割槽索引跨分割槽對成本的影響Oracle索引
- 對列進行連線操作會影響索引的使用索引
- 網路延遲對事務的影響
- 資訊圖:網頁載入速度到底對你的品牌有多大影響?網頁
- (f)--閃回恢復區-- 並行載入對閃庫的影響並行
- 並行建立索引會不會進行直接路徑讀取?並行索引
- “影響者研究”系列(一):社會網路化時代影響者對營銷創新的影響
- 複合索引中前導列對sql查詢的影響索引SQL
- HTTP對網路速度是否有影響?HTTP
- oracle分割槽表的常規操作導致對索引的影響Oracle索引
- 美國廢除“網路中立”對中國的影響
- 社交網路大資料將直接影響企業的變現能力大資料
- 檔案的相對路徑和絕對路徑以及根相對路徑
- html中的路徑的介紹:絕對路徑和相對路徑HTML
- Sql Server之旅——第十站 看看DML操作對索引的影響SQLServer索引
- 資料庫聚簇索引——not null條件對唯一鍵索引成為聚簇索引的影響資料庫索引Null