对比DML操作产生的REDO及UNDO大小

结论:相同数据量的数据操作:

INSERT产生最少REDO;UPDATA首先的REDO居中;DELETE产生最多REDO。

DELETE产生UNDO最多,UPDATE次之,INSERT产生UNDO最少。


DML操作数据未COMMIT时,无查询到REDO信息变化-----这是10G后Oracle的新特性:IMU。
Redo先放在共享池中,Commit时,再传入Log Buffer。只有当日志传入Log Buffer时,Oracle的Redo统计资料才会增加。
这样做的目的,是为了减少向Log Buffer传数据的次数,减少Log BUffer相关Latch的竞争。

实验如下:

1.INSERT产生的REDO UNDO

SQL> select name,value from (select b.name,a.value from v$mystat a,v$statname b where a.STATISTIC#=b.statistic#) where  name='redo size' or name like 'undo change%';
NAME                                                                  VALUE
---------------------------------------------------------------- ----------
redo size                                                                 0
undo change vector size                                                   0
SQL> select * from test;
A
----------
 
SQL> insert into test select rownum from dual connect by rownum<=10;
10 rows inserted
SQL> commit;
Commit complete
SQL> select name,value from (select b.name,a.value from v$mystat a,v$statname b where a.STATISTIC#=b.statistic#) where  name='redo size' or name like 'undo change%';
NAME                                                                  VALUE
---------------------------------------------------------------- ----------
redo size                                                               576
undo change vector size                                                 156
SQL> select 576-0 as redo_size_insert_change,156-0 as undo_size_insert_change from dual;
REDO_SIZE_INSERT_CHANGE UNDO_SIZE_INSERT_CHANGE
----------------------- -----------------------
                    576                     156

2.UPDATE产生的UNDO REDO

SQL> select name,value as bytes from (select b.name,a.value from v$mystat a,v$statname b where a.STATISTIC#=b.statistic#) where  name='redo size' or name like 'undo change%';
 
NAME                                                                  BYTES
---------------------------------------------------------------- ----------
redo size                                                               576
undo change vector size                                                 156
SQL> select * from test;
A
----------
1
2
3
4
5
6
7
8
9
10
 
SQL> update test set a=a+100;
10 rows updated
SQL> commit;
Commit complete
SQL> select name,value as bytes from (select b.name,a.value from v$mystat a,v$statname b where a.STATISTIC#=b.statistic#) where  name='redo size' or name like 'undo change%';
NAME                                                                  BYTES
---------------------------------------------------------------- ----------
redo size                                                              3124
undo change vector size                                                1104
SQL> select * from test;
A
----------
101
102
103
104
105
106
107
108
109
110
SQL> select 3124-576 as redo_size_update_change,1104-156 as undo_size_update_change from dual;
 
REDO_SIZE_UPDATE_CHANGE UNDO_SIZE_UPDATE_CHANGE
----------------------- -----------------------
                   2548                     948

3.DELETE产生REDO UNDO

SQL> select name,value as bytes from (select b.name,a.value from v$mystat a,v$statname b where a.STATISTIC#=b.statistic#) where  name='redo size' or name like 'undo change%';
NAME                                                                  BYTES
---------------------------------------------------------------- ----------
redo size                                                              3124
undo change vector size                                                1104
SQL> select * from test;
A
----------
101
102
103
104
105
106
107
108
109
110
SQL> delete test;
10 rows deleted
SQL> commit;
Commit complete
SQL> select * from test;
A
----------
 
SQL> select name,value as bytes from (select b.name,a.value from v$mystat a,v$statname b where a.STATISTIC#=b.statistic#) where  name='redo size' or name like 'undo change%';
NAME                                                                  BYTES
---------------------------------------------------------------- ----------
redo size                                                              5628
undo change vector size                                                2212
SQL> select 5628-3124 as redo_size_delete_change,2212-1104 as undo_size_delete_change from dual;
 
REDO_SIZE_DELETE_CHANGE UNDO_SIZE_DELETE_CHANGE
----------------------- -----------------------
                   2504                    1108
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值