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...