概述

在非归档模式下,INSERT语句采用HINT /*+ APPEND*/的方式确实比普通INSERT语句产生的redo要少很多。而归档模式呢?表是不是也有区别?下面做个实验来测试下~


insert /*+ append */注意事项:

a、非归档模式下,只需append就能大量减少redo的产生;归档模式下,只有append+nologging才能大量减少redo。

b、insert /*+ append */ 时会对表加锁(排它锁),会阻塞表上的除了select以外所有DML语句;传统的DML在TM enqueue上使用模式3(row exclusive),其允许其他DML在相同的模式上获得TM enqueue。但是直接路径加载在TM enqueue使用模式6(exclusive),这使其他DML在直接路径加载期间将被阻塞。

c、insert /*+ append */ 直接路径加载,速度比常规加载方式快。因为是从HWM的位置开始插入,也许会造成空间浪费。


1.环境介绍

数据库版本:

SQL> select * from v$version;

这里选了其中一台测试数据库服务器来演示。

网上说测试时不要使用auto trace来查看redo size,这个值是有偏差的.建议建立一个视图:

SQL> create or replace view redo_size asselect valuefrom v$mystat, v$statnamewhere v$mystat.statistic# = v$statname.statistic#and v$statname.name = 'redo size';

实例演示:

1 非归档模式

SQL> archive log list;

1.1 nologging表

SQL> create table test1 nologging as select * from dba_objects where 1=0;SQL> select * from redo_size;SQL> insert into test1 select * from dba_objects; SQL> select * from redo_size;SQL> insert /*+ APPEND */ into test1 select * from dba_objects;SQL> select * from redo_size;SQL> select (10416364-10393068) redo_append ,(10393068-65740) redo_normal from dual;

1.2 logging表:

SQL> create table test2 as select * from dba_objects where 1=0;SQL> select * from redo_size;SQL> insert into test2 select * from dba_objects;SQL> select * from redo_size;SQL> insert /*+ APPEND */ into test2 select * from dba_objects;SQL> select * from redo_size;SQL> select (20807336-20782980) redo_append , (20782980-10455852) redo_normal from dual;

2 归档模式下:

SQL> shutdown immediateSQL> startup mountSQL> alter database archivelog;SQL> alter database open;SQL> archive log list

2.1 nologging表

SQL> select * from redo_size;SQL> insert into test1 select * from dba_objects;SQL> select * from redo_size;SQL> insert /*+ APPEND */ into test1 select * from dba_objects;SQL> select * from redo_size;SQL> select (10343044-10318716) redo_append , (10318716-21484) redo_normal from dual;

2.2 logging表

SQL> select * from redo_size;SQL> insert into test2 select * from dba_objects;SQL> select * from redo_size;SQL> insert /*+ APPEND */ into test2 select * from dba_objects;SQL> select * from redo_size;SQL> select (31025676-20639888) redo_append , (20639888-10343044) redo_normal from dual;

在归档模式下,对于常规表的insert append产生和insert同样的redo。

此时的insert append实际上并不会有性能提高,但是此时的append是生效了的。


非归档模式下,无论是nologging表还是logging表,表的insert append产生的redo远远小于insert同样的redo。

归档模式下,对于nologging表,表的insert append产生的redo远远小于insert同样的redo。而对于logging表的insert append产生和insert同样的redo。

后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~

oracle 模式_Oracle实验--insert /*+APPEND*/与insert不同模式下产生redo大小相关推荐

  1. 【知识点整理】Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行速度的比较...

    [知识点整理]Oracle中NOLOGGING.APPEND.ARCHIVE和PARALLEL下,REDO.UNDO和执行速度的比较 [知识点整理]Oracle中NOLOGGING.APPEND.AR ...

  2. 【知识点整理】NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行速度的比较...

    [知识点整理]Oracle中NOLOGGING.APPEND.ARCHIVE和PARALLEL下,REDO.UNDO和执行速度的比较 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 ...

  3. 磁盘阵列掉电 oracle数据库,掉电导致磁盘坏,非归档下的redo全部丢失,数据库打开的恢复失败...

    1.环境 OS:sun solaris Database version:8.1.7 数据文件存放路径:/u01/oradata/bjtb/; /u02/oradata/bjtb/ 数据库为非归档 2 ...

  4. oracle数据库 append,oracle中insert,copy,insert append执行对比

    oracle中insert,copy,insert append执行对比 还是由于迁移数据库,测试了insert,copy,insert append的执行速度. 环境:oracle9i向oracle ...

  5. oracle中并行与append,如何让insert /*+ append */ 采用并行。

    SQL> explain plan for insert /*+ append  parallel(my 2) */ into my select * from ac01; 已解释. 已用时间: ...

  6. insert /*+ APPEND */

    总结得出以下3点结论: a.非归档模式下,只需append就能大量减少redo的产生:归档模式下,只有append+nologging才能大量减少redo. b.insert /*+ append * ...

  7. oracle数据库中insert,【Oracle】sql插入之 insert all、insert first

    Oracle插入之 insert all.insert first介绍 利用insert first/all使得INSERT语句可以同时插入多张表,还可以根据判断条件来决定每条记录插入到哪张或哪几张表 ...

  8. 【python列表插入函数】append() extend() insert() 三者区别与使用方法

    三个列表插入函数 append() extend() insert() append() append()函数是在列表末尾添加元素 append()括号内可以是数字.字符串- a=[1,2] a.ap ...

  9. oracle触发器中的after insert后继续触发,oracle触发器使用:after insert 与before insert的简单使用注意...

    创建触发器时,触发器类型为after insert , 在begin中 Select fieldA into v_a from tableA; 执行到此句时,会出错: --弹出错误信息提示 --ORA ...

  10. markdown tips :发布和保存的区别+避免打字键入文字后替换删除后面的字(更改打字时的光标模式:竖线或黑块)insert键+键盘文字选中方法+csdn 上传图片不加水印

    csdn 上传图片不加水印 将问号后的内容删掉 ![在这里插入图片描述](https://img-blog.csdnimg.cn/1a74f0e30afb46d699541009e0811df4.pn ...

最新文章

  1. [YY题]HDOJ5288 OO’s Sequence
  2. java书籍_这本最适合夯实基础的Java 书籍,80% 的 Java 程序员没认真看过
  3. Android-可自动缩小字体的TextView
  4. 我的机器学习入门之路(上)——传统机器学习
  5. 企业形象广告的几个突破要点
  6. rocksdb原理_[转]Rocksdb Compaction原理
  7. MySQL-MySQL数据类型及占用字节数
  8. python中表示空类型的是_python中什么表示空类型
  9. Unity 工具 之 常用插件分类汇总(UI/VR/AR/建模/Shader/动画/网络/AI/资源/数据/区块链等)
  10. 如何使用EDI系统解决对接多工厂的问题?
  11. excel vba移位运算
  12. 酷派android4.4.4到5.0,酷派大神F1电信版升级安卓5.0刷机教程[多图]
  13. DSP开发,使用CCS软件建立工程以及烧录
  14. 计算机系统基础第二版_2020年注册环保工程师公共基础考试题库
  15. Eclipse安装漂亮的Darkest Dark Theme主题步骤(超详细)
  16. 【NOI Online】 2021普及
  17. centos mysql 绿色版安装_centos7环境下mysql5.7的安装与配置(免安装版)
  18. 人工智能培训机构哪个好?求求你们别再去培训机构学假的人工智能了!
  19. 用什么办法可以解决失眠?
  20. 身份证号码校验java

热门文章

  1. asp上传服务器后台图片显示,asp.net上传图片到服务器方法详解
  2. A guess 解题报告
  3. 【计算机视觉】【并行计算与CUDA开发】GPU硬编码
  4. 软件测试工作职责,软件测试经理岗位职责
  5. JVM初识之虚拟机内存结构
  6. Spring Cloud Data Flow 2.0.1 GA 发布
  7. 守卫数据中心命门的胡桃夹子-特权账号管理平台
  8. 【电力电子】功率因素\无功功率
  9. [译]Vue 2.0的变化(一)之基本API变化
  10. 一次idea上使用logback+slf4j乱码的解决,问题不在logback