• 关于redo size(一)


         要辞职了,总是无比轻松,于是今天闲着做了做1z0-042的题库,其中有一个关于truncate的,正确答案是truncate可以产生很少的redo,实践出真实,我做个试验验证一下。

         step1 建表

    1 create table test as select * from dba_objects;

         step2 统计出现在的redosize

         

    select name, value from v$sysstat a where a.name = 'redo size';

          记录下redo size:32378840。

         step3 truncate该表,之后统计redo size

    truncate table test1;

          现在的redo size:32423748。

          可以看出,redo size增长了:44908。

          step4 删掉这张表,依上述法则重建,并且记录redo size。

          

    1 drop table test1;
    2 create table test1 as select * from dba_objects;
    3 select name, value from v$sysstat a where a.name = 'redo size';

          现在的redo size:32737804。

          step5 用普通的办法删除,并记录redo size:

          

    1 delete from test1;
    2 commit; --commit本身不产生redo
    3 select name, value from v$sysstat a where a.name = 'redo size';

         现在的redo size:59415540。

         与之前的记录数相减:26677736。

         由此可见,使用truncate的好处就是可以产生非常少量的redo,因此其删除速度理论上讲,要高于delete。在这实验之前,我们按照甲方要求,清空了一张3G大的数据表,当时因为对truncate认识不足,认为会占用很长的时间,因此我已经做好了将电脑留在办公室跑一夜的打算,但是没想到一眨眼的功夫,这样表就被清空了,可惜当时没有记录下redo size的变化,不然现在拿出来也是一个很好的例证。

         这就当作第一篇吧,以后还要慢慢的研究SQL和redo。

  • 相关阅读:
    《jQuery源码解析》读书笔记(第一章:总体架构)
    无线开发学习笔记
    无线开发知识
    underscore源码了解
    Git 速查手册
    Jetpack Compose之隐藏Scaffold的BottomNavigation
    一种封装Retrofit的方法,可以自动解析Gson,回避Method return type must not include a type variable or wildcard: retrofit2.Call<T>的问题
    整理之Java容器
    整理之Fragment
    整理之BroadcaseReceiver
  • 原文地址:https://www.cnblogs.com/wingsless/p/2278618.html
Copyright © 2020-2023  润新知