计算一个语句产生的undo
来源:互联网 发布:知己知彼软件怎么样 编辑:程序博客网 时间:2024/06/06 04:28
归档模式下表为nologging状态,且使用/*+ append*/ insert时会提高效率。
为什么呢,因为会减少redo和undo的产生。
如何计算一个insert产生了多少undo呢,通过对比当前session执行insert前后
undo的数量可以知道。
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0
SQL> select sid from v$mystat where rownum=1;
SID
----------
312
SQL> select value "undo change vector size"
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 = '312' ;
undo change vector size
-----------------------
0
SQL> create table t as select rownum from user_objects where rownum<100;
create table t as select rownum from user_objects where rownum<100
ORA-00998: must name this expression with a column alias
-- 显示给rownum 指定个别名就好了
SQL> create table t as select rownum a from user_objects where rownum<100;
Table created
SQL> select value "undo change vector size"
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 = '312' ;
undo change vector size
-----------------------
3128
SQL> insert /*+ append */ into t select rownum a from user_objects where rownum<100;
99 rows inserted
SQL>
SQL> select value "undo change vector size"
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 = '312' ;
undo change vector size
-----------------------
3204
--计算采用/*+ append */ 模式插入100条记录产生undo的数量
SQL> select 3204 - 3128 d from dual;
D
----------
76
SQL> insert into t select rownum a from user_objects where rownum<100;
99 rows inserted
SQL> commit;
Commit complete
SQL> select value "undo change vector size"
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 = '312' ;
undo change vector size
-----------------------
3920
--计算采用正常模式插入100条记录产生undo的数量
SQL> select 3920 - 3204 d from dual;
D
----------
716
结果表明插入同样的记录,采用/*+ append*/ 方式产生的undo会更少一些。
- 计算一个语句产生的undo
- 如何计算某个sql语句所产生的redo和undo大小?
- 如何计算某个sql语句所产生的redo和undo大小?
- shell 中产生一个的计算
- direct insert下不会产生数据的 UNDO
- update和delete谁产生的undo更多
- 对比DML操作产生的REDO及UNDO大小
- DDL操作产生UNDO和REDO的示例
- 对比insert和delete操作产生的undo
- 测试APPEND INSERT是否产生UNDO信息的过程
- vc++ 做的一个redo/undo
- 一个简单的Undo Redo Framework
- 发现一个vim的恢复命令undo
- 以下操作不产生UNDO
- 以下操作不产生UNDO
- 一个类的产生
- undo系列学习之如何计算undo表空间的大小
- sql语句 一个表 用户产生两条不同类型的数据 拼接成一条数据
- sap abap 最简单的excle 导入程序
- StarUML---推荐一款UML工具(很好很强大)
- 自动生成 makefile 文件 以及 用objcopy 生成bin文件
- MySQL 转换 Oracle 的七大注意事项
- linux操作系统原理与应用-读书笔记(2)-进程(1)
- 计算一个语句产生的undo
- new、vitual、override之间那点事
- 郁闷了,硬件和软件
- inet_ntoa 连续使用 注意事项
- "合成聚合复用原则" (转http://www.cnblogs.com/supertbt/archive/2007/03/07/666319.html)
- 安全保密级别高的环境下部署Silverlight应用程序
- Hibernate数据不能插入同时也没有报错
- 母版页中引用图片、外部js、css文件的路径问题
- 错误提示:ORA-01747: user.table.column, table.column 或列说明无效