如何在十分鐘內插入1億條記錄到Oracle資料庫?

2021-08-13 20:48:13 字數 1127 閱讀 7145

-- create table

create table tmp_test_chas_lee

(f01 varchar2(20),

f02 number(10) not null,

f03 varchar2(21),

f04 varchar2(21),

f05 number,

f06 number(20)

);--建立乙個臨時表,用於提供序列號

create global temporary table t_sequence_num(

sequencenum number(8) not null

)on commit preserve rows;

--開始插入資料

begin

--先生成1萬個序號

delete from t_sequence_num;

for i in 0..9999 loop

insert into t_sequence_num(sequencenum) values(i);

end loop;

for i in 1..10 loop

(f01, f02, f03, f04, f05, f06)

select

8613800000000 + i * 10000 + t_sequence_num.sequencenum as msisdn,

'12106000',

0,'20120312072000',

'500231891000',

null

from t_sequence_num;

--每批次必須要提交一次

commit;

end loop;

end;

/效果非常驚人,上億的資料,十分鐘左右就搞定了,也就是說,每秒鐘插入了超過10萬條以上的記錄。

效能測試人員不用耗費大量的時間來等待測試資料生成了。

需要注意的問題:

1. 插入資料時,表上不要建立索引

2. 可以在資料插入完畢後,通過 nologging 和 parallel 來建立索引

3. 這裡預設是1萬條記錄提交一次,可以改的更大,應該會更快

5. 生成的資料的每個欄位都是可以根據自己的需要靈活產生的

如何在十分鐘內插入1億條記錄到Oracle資料庫?

create table create table tmp test chas lee f01 varchar2 20 f02 number 10 not null,f03 varchar2 21 f04 varchar2 21 f05 number,f06 number 20 建立乙個臨時表,用於...

課間十分鐘

時間限制 1000 ms 記憶體限制 128 mb 兩人都是數學愛好者,便發明了乙個遊戲。在遊戲開始前,他們先約定乙個正整數n,同時令m 1。遊戲過程中,每個人都可以將m的值擴大2到9中的任意倍數。第乙個使m n的人就是最後的贏家。181818181818和zbt都十分聰明,並且遊戲過程中都使用最佳...

十分鐘的代價

2008年9月15日上午10 00,擁有158年歷史的美國第四大投資銀行 雷曼兄弟公司向法院申請破產保護,訊息轉瞬間通過電視 廣播和網路傳遍地球的各個角落。令人匪夷所思的是,在如此重大的情況下,德國國家發展銀行在十分鐘後,居然按照外匯掉期協議的交易,通過計算機自動付款系統,向雷曼兄弟公司即將凍結的銀...