如何计算某个sql语句所产生的redo和undo大小?

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 04:50 点击:

 

下午,群中一个网友提出了如下一个问题,如下:

7's Life(58410752) 16:15:19 能计算 一个insert产生 的redo 和undo 大小吗Roger 16:15:42 可以7's Life(58410752) 16:16:08 R 大师 请指点一下 呵呵 不会是 使用trace 文件吧

 

回答该问题其实非常的简单,花了20分钟做了如下简单的测试,供大家参考。

SQL> CREATE TABLE killdb AS SELECT * FROM dba_objects;

 

TABLE created.

 

SQL> SELECT COUNT(*) FROM killdb;

 

  COUNT(*)

----------

     50100

 

SQL> SET autotrace traceonly statistics

SQL> SET LINES 150

SQL> UPDATE  killdb

  2     SET owner='www.killdb.com'

  3   WHERE object_id >1000 AND object_id <1200;

 

199 ROWS updated.

 

 

Statistics

----------------------------------------------------------

         51  recursive calls

        208  db block gets

        798  consistent gets

          0  physical reads

      53908  redo SIZE  

        668  bytes sent via SQL*Net TO client

        619  bytes received via SQL*Net FROM client

          3  SQL*Net roundtrips TO/FROM client

          1  sorts (memory)

          0  sorts (disk)

        199  ROWS processed

此时我们知道这个update语句会产生53908 byte的redo 日志。当然这个是sql未执行前就进行的计算,

如果要计算某个sql执行完毕以后所产生的redo size,我们还可以通过查询v$mystat试图获得结果,如下:

SQL> SET autot off

SQL> SELECT a.name, b.VALUE

  2    FROM v$statname a, v$mystat b

  3   WHERE a.statistic# = b.statistic#

  4     AND a.name = 'redo size';

 

NAME                       VALUE

--------------------- ----------

redo SIZE                5807132

 

SQL> UPDATE  killdb

  2     SET owner='www.killdb.com'

  3   WHERE object_id >1000 AND object_id <1200;

 

199 ROWS updated.

 

SQL> commit;

 

Commit complete.

 

SQL> SELECT a.name, b.VALUE

  2    FROM v$statname a, v$mystat b

  3   WHERE a.statistic# = b.statistic#

  4     AND a.name = 'redo size';

 

NAME                       VALUE

--------------------- ----------

redo SIZE                5829644

 

SQL> SELECT 5829644 - 5807132 FROM dual;

 

5829644-5807132

---------------

          22512

我们可以明显的看到,通过查询v$mystat 得出的结果跟前面通过看sql执行计划统计信息

结果有较大的差别,区别在哪儿呢?

 

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • sql常见面试题
      • SQL SERVER 2005性能之跟踪
      • SQL编程(一)
      • LINUX上RMAN自动备份脚本
      • sql server面试题
      • 如何将多个SQL查询统计结果一次显示出来
      • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
      • SQL小技巧系列 --- 行转列合并
      • sql server 列转行
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1