insert的不同場景效能比較

jeanron100發表於2014-06-08

關於Insert的問題,可能在一些場景中會有完全不同的期望和結果,在日常工作使用的庫中,需要表在Logging模式,必要時需要一些索引

但在資料遷移中,可能為了提高速度,索引就需要考慮重建了。

我做了一些場景的測試,並且做了詳細的資料比對。

第一種場景:table在nologging模式下。並且表中沒有索引,

在插入不同資料量的時候,生成的redo和響應時間都有一定的幅度提升。

比如插入13240331條記錄時,響應時間為63秒,生成323219520bytes(300多M)的redo.

nologging+no index
sec:misec inserted rows redo generated
00.10 25862 635692
00.12 51723 1231620
00.18 103444 2461540
00.33 206885 4922516
00.67 413766 9840892
02.19 827527 19697976
09.90 1655048 40128988
15.68 3310089 80470212
33.89 6620170 161501892
63.28 13240331 323219520

第二種場景:table在logging模式下,表中沒有索引

  logging+no index  
00.10 25862 635616
00.10 51723 1231620
00.17 103444 2461480
00.35 206885 4930208
00.68 413766 9841248
01.69 827527 19692980
06.94 1655048 40117876
16.66 3310089 80428640
41.23 6620170 161690412
72.47 13240331 323049996

 

總結:可以看到兩者基本上沒有任何變化

image

第三種場景:表在nologging模式,表中有主鍵,主鍵對應的索引處於logging模式

  nologging+index(unique index) logging  
00.22 25862 1381736
00.32 51723 2733468
00.44 103444 5431700
01.15 206885 10872316
03.25 413766 21777088
07.69 827527 43521600
16.33 1655048 90658812
41.71 3310089 183135576
82.40 6620170 366262424
190.50 13240331 731534236

 

可能直接看不太明顯,如果有一個圖示就更清晰了。左邊的部分是採用logging,沒有索引的場景,可以看到已經有了成倍的變化。可見在有索引的時候對於insert來說,會產生大量的redo,響應時間也成倍提高。

image

第四種場景,表採用nologging模式,表中無索引,使用append模式插入資料。

  nologging+no index+append  
00.14 25862 635632
00.14 51723 1231560
00.16 103444 2461480
00.33 206885 4922516
00.64 413766 9840848
01.52 827527 19697592
11.30 1655048 40165208
19.18 3310089 80450796
46.26 6620170 160910172
76.66 13240331 322991832

總結:可以看到在沒有索引的情況下,nologging+append模式和nologging基本沒有區別。

image

第五種場景:表處於nologging模式,表中有索引,處於Nologging模式。採用append插入資料。

可以看到採用index的logging和nologging模式,兩者也沒有明顯的變化

image

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-1178010/,如需轉載,請註明出處,否則將追究法律責任。

相關文章