临时表的redo生成要比普通表少的多,但是undo的产生并不比普通表少。
通过一个简单的例子说明:
SQL> create global temporary table t_temp
2 (id number, name varchar2(30))
3 on commit preserve rows;
表已创建。
SQL> create table t_normal
2 (id number, name varchar2(30));
表已创建。
SQL> select sid
2 from v$mystat
3 where rownum = 1;
SID
———-
133
SQL> select value
2 from v$statname a, v$sesstat b
3 where a.statistic# = b.statistic#
4 and a.name = ‘undo change vector size ‘
5 and b.sid = 133;
未选定行
SQL> select value
2 from v$statname a, v$sesstat b
3 where a.statistic# = b.statistic#
4 and a.name = ‘undo change vector size’
5 and b.sid = 133;
VALUE
———-
3988
SQL> insert into t_normal
2 select rownum, object_name
3 from dba_objects;
已创建49081行。
SQL> commit;
提交完成。
SQL> select value
2 from v$statname a, v$sesstat b
3 where a.statistic# = b.statistic#
4 and a.name = ‘undo change vector size’
5 and b.sid = 133;
VALUE
———-
135232
SQL> insert into t_temp
2 select rownum, object_name
3 from dba_objects;
已创建49081行。
SQL> commit;
提交完成。
SQL> select value
2 from v$statname a, v$sesstat b
3 where a.statistic# = b.statistic#
4 and a.name = ‘undo change vector size’
5 and b.sid = 133;
VALUE
———-
254240
SQL> select 254240 – 135232 temp_table, 135232 – 3988 normal_table from dual;
TEMP_TABLE NORMAL_TABLE
———- ————
119008 131244
可以看到,临时表和普通表产生的undo数据没有太多的差别,而实际上临时表的插入产生的redo信息也是undo信息对应的redo。
SQL> insert /*+ append */ into t_temp
2 select *
3 from t_temp;
已创建49081行。
SQL> commit;
提交完成。
SQL> select value
2 from v$statname a, v$sesstat b
3 where a.statistic# = b.statistic#
4 and a.name = ‘undo change vector size’
5 and b.sid = 133;
VALUE
———-
254408
SQL> insert /*+ append */ into t_normal
2 select *
3 from t_normal;
已创建49081行。
SQL> commit;
提交完成。
SQL> select value
2 from v$statname a, v$sesstat b
3 where a.statistic# = b.statistic#
4 and a.name = ‘undo change vector size’
5 and b.sid = 133;
VALUE
———-
256468
SQL> select 254408 – 254240 temp_table, 256468 – 254408 normal_table from dual;
TEMP_TABLE NORMAL_TABLE
———- ————
168 2060
对于append方式插入,普通表和临时表都会产生少量的undo,而临时表相对会更少一些。
oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html
转载于:https://blog.51cto.com/19880614/1224861
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/110100.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...