關於redo(二)插入更新資料時的效率比較

2021-09-08 02:26:20 字數 914 閱讀 9582

繼續昨天的問題。我曾經面對乙個工作,要把一張很大的表中,3個月前的資料刪掉,轉儲到歷史表中。這將是乙個很大的工程,需要在一周內完成,而且只能在夜裡進行工作。這就需要考慮到效能問題了,考慮到網上很多人說nologging會很快,我就做個試驗,比較一下效率。

實驗環境:windows7 x64。oracle11g,11.2.0.1.0。歸檔模式,實驗表:test1(create table test1 as select * from dba_objects;)。

實驗步驟:

實驗之前記錄的 redo size:35580568

insert的比較:

insert into test1 (select * from dba_objects);

commit; 

直接插入,redo size:49178876 產生的redo size:13598308

nologging插入,redo size:65167892 產生的redo size:15989016

更改表為nologging,記錄當前的redo size:78626484

直接插入,redo size:92136040 產生的redo size:13509556

update的比較

update test1 set object_id = ***x;

commit;

記錄redo size: 107764388

直接更新,redo size:212615144 產生的redo size:104850756

nologging更新,redo size:319452512 產生的redo size:106837368

更改表為nologging,redo size:621576604

直接更新,redo size: 726667444 產生的redo size:105090840

插入資料時更新時間

通常表中會有乙個create date 建立日期的字段,其它資料庫均有預設值的選項。mysql也有預設值timestamp,但在mysql中,不僅是插入就算是修改也會更新timestamp的值!這樣一來,就不是建立日期了,當作更新日期來使用比較好!因此在mysql中要記錄建立日期還得使用dateti...

sqlalchmy 插入資料時自動更新時間

class task basemodel tablename task spiders 表名 nullable 定義各欄位 task num db.column db.integer,autoincrement true primary key true nullable false comment...

MySQL插入 更新資料時,要求不重複

一 插入資料時 當插入資料時,要求資料表的某一列 比如name 不重複,語法如下 insert into table field1,field2,fieldn select field1 field2 fieldn from dual where notexists select field fro...