DML對undo的影響

2021-08-26 22:17:43 字數 1471 閱讀 1614

insert:只生產需要建立日誌的很少的undo。

update:生成的undo資料量等於修改資料的前映像大小.

delete:會生成整個資料集寫至undo段.

索引會對undo產生的量息息相關。

--案例

drop table t1 purge;

create table t1

(sid int not null primary key,

sname varchar2(10),

tname varchar2(10)

)tablespace test;

declare

maxrecords constant int:=200000;

i int :=1;

begin

for i in 1..maxrecords loop

insert into t1 values(i,'ocpyang','ocpyang');

end loop;

dbms_output.put_line(' 成功錄入資料! ');

commit;

end;

/create index index_01 on t1(sname);

exec dbms_stats.gather_table_stats(user,'t1');

update t1 set tname = upper(tname);

select used_ublk

from v$transaction

where addr = (select taddr

from v$session

where sid = (select sid

from v$mystat

where rownum = 1))

/---結果為:

used_ublk

----------

2884

commit;

select used_ublk

from v$transaction

where addr = (select taddr

from v$session

where sid = (select sid

from v$mystat

where rownum = 1))

/---結果為:

未選定行

update t1 set sname = upper(sname);

select used_ublk

from v$transaction

where addr = (select taddr

from v$session

where sid = (select sid

from v$mystat

where rownum = 1))

/---結果為:

used_ublk

----------

6459

關於MySQL建表對DML的影響

今天一位同學問到線上曾經碰到過連續建表,導致阻塞普通的insert update等。不過也沒有保留現場。因此有疑問為什麼建表會影響dml?分析 首先這個現象不是在所有場景都會碰到 否則mysql的使用者們早就跳起來了 一來建表這個操作本身很快,只涉及到寫表定義檔案和初始化表空間。中間涉及到redo和...

關於MySQL建表對DML的影響

今天一位同學問到線上曾經碰到過連續建表,導致阻塞普通的 insert update 等。不過也沒有保留現場。因此有疑問為什麼建表會影響 dml?分析 首先這個現象不是在所有場景都會碰到 否則 mysql 的使用者們早就跳起來了 一來建表這個操作本身很快,只涉及到寫表定義檔案和初始化表空間。中間涉及到...

對ORACLE的TEMP和UNDO空間的操作集合

1 查詢temp表空間大小 select temp used.tablespace name,total used as free total as total round nvl total used,0 100 total,3 free percent from select tablespac...