对比append插入数据产生的redo量
--版本信息
SELECT * FROM v$version;
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Prod
PL/SQL Release 10.2.0.5.0 - Production
CORE 10.2.0.5.0 Production
TNS for 32-bit Windows: Version 10.2.0.5.0 - Production
NLSRTL Version 10.2.0.5.0 - Production --查看是否归档
select name,log_mode from v$database;
1 ORCL NOARCHIVELOG
或sqlplus:ARCHIVE LOG LIST; --创建查看产生redo大小的视图
create or replace view redo_size as
select value
from v$mystat, v$statname
where v$mystat.statistic# = v$statname.statistic#
and v$statname.name = 'redo size';
1.在非归档模式下:
--!!!!!!!!!!!非归档模式 产生的redo!!!!!!!!!!!!!!!!!!
--==============nologging表================
SELECT * FROM sys.redo_size;
--redo_size:0
create table test_nolog nologging as select * from dba_objects where 1=0;
--redo_size:17932
insert into test_nolog select * from dba_objects;
--redo_size:5772780
insert /*+ APPEND */ into test_nolog select * from dba_objects;
--redo_size:5782548
select (5782548-5772780) redo_append, (5772780-17932) redo_normal from dual;
9768 5754848
--================logging============================
--redo_size:11778596
create table test_log as select * from dba_objects where 1=0;
--redo_size:11799284
insert into test_log select * from dba_objects;
--redo_size:17555812
insert /*+ APPEND */ into test_log select * from dba_objects;
--redo_size:17565544
select (17565544-17555812) redo_append, (17555812-11799284) redo_normal from dual;
9732 5756528
结论:非归档模式下,只需append就能大量减少redo的产生,如果不加append,即使是nologing表也会产生一样多的redo;
2.在归档模式下:
--修改为归档模式
set ORACLE_SID=ORCL
sqlplus / as sysdba SYS@ORCL> archive log list
数据库日志模式 非存档模式
自动存档 禁用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 544
当前日志序列 546
SYS@ORCL> select log_mode from v$database;
LOG_MODE
------------
NOARCHIVELOG SYS@ORCL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SYS@ORCL> startup mount
ORACLE 例程已经启动。 Total System Global Area 1258291200 bytes
Fixed Size 1304848 bytes
Variable Size 201328368 bytes
Database Buffers 1048576000 bytes
Redo Buffers 7081984 bytes
数据库装载完毕。
SYS@ORCL> alter database ARCHIVELOG; 数据库已更改。
SYS@ORCL> archive log list
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 544
下一个存档日志序列 546
当前日志序列 546
SYS@ORCL> alter database open; 数据库已更改。
--!!!!!!!!!!!归档模式 产生的redo!!!!!!!!!!!!!!!!!!
--==============nologging表================
SELECT * FROM redo_size;
--redo_size:0
insert into test_nolog select * from dba_objects;
--redo_size:5729772
insert /*+ APPEND */ into test_nolog select * from dba_objects;
--redo_size:5739436
select (5739436-5729772) redo_append, (5729772-0) redo_normal from dual;
9664 5729772
--================loging============================
--redo_size:5729772
insert into test_log select * from dba_objects;
--redo_size:11355620
insert /*+ APPEND */ into test_log select * from dba_objects;
--redo_size:17123736
select (17123736-11355620) redo_append, (11355620-5729772) redo_normal from dual;
5768116 5625848
结论:归档模式下,append并且表为nologging 才能减少redo的产生,其余情况没效果;
对比append插入数据产生的redo量的更多相关文章
- Oracle快速插入数据append
1:用merge into 进行匹配更新和插入,2: 开启并行,提高速度3: 如果可以的话加NOLOGING 不写入日志4:如果数据有规律的话,分批次执行 1.使用marge快速插入; MERGE / ...
- Oracle 插入数据效率对比
oracle插入数据有多种方式: 将从多个表中查出来的数据插入到临时表中 数据行数 5189597 1.传统方式:直接将数据插入到表中 insert into LLB_BASIC_USER_D_TEM ...
- android批量插入数据效率对比
对比在android中批量插入数据的3中方式对比(各插入1W条数据所花费的时间): 1. 一个一个插入 /** * 向表中插入数据 * * @param openHelper * @param app ...
- IT题库2-LinkList和ArrayList(插入数据、末尾插入数据、不同数据量插入数据)的效率?
ArrayList和LinkedList是两个集合类,用于存储一系列的对象引用(references).ArrayList是List接口的一个实现类,它的特点是查询效率高,增删效率低,线程不安全,原因 ...
- C#批量插入数据到Sqlserver中的四种方式
我的新书ASP.NET MVC企业级实战预计明年2月份出版,感谢大家关注! 本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的 ...
- Entity Framework与ADO.NET批量插入数据性能测试
Entity Framework是.NET平台下的一种简单易用的ORM框架,它既便于Domain Model和持久层的OO设计,也提高了代码的可维护性.但在使用中发现,有几类业务场景是EF不太擅长的, ...
- 批量插入数据(基于Mybatis的实现-Oracle)
前言:做一个数据同步项目,要求:同步数据不丢失的情况下,提高插入性能. 项目DB框架:Mybatis.DataBase:Oracle. -------------------------------- ...
- C#_批量插入数据到Sqlserver中的四种方式
先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生成一个GUID算法所花的时间肯定比你从数据表中重新查询上一条记 ...
- MySQL批量插入数据的几种方法
最近公司要求测试数据库的性能,就上网查了一些批量插入数据的代码,发现有好几种不同的用法,插入同样数据的耗时也有区别 别的先不说,先上一段代码与君共享 方法一: package com.bigdata; ...
随机推荐
- 【转】谈谈 iOS 中图片的解压缩
转自:http://blog.leichunfeng.com/blog/2017/02/20/talking-about-the-decompression-of-the-image-in-ios/ ...
- LeetCode:9. Palindromic Number(Medium)
原题链接:https://leetcode.com/problems/palindrome-number/description/ 1. 题目要求:判断一个int类型整数是否是回文,空间复杂度O(1) ...
- PIC32MZ 通过U盘在线升级 -- USB Host bootloader
了解bootloader的实现,请加QQ: 1273623966(验证填bootloader); 欢迎咨询或定制bootloader; 我的博客主页 www.cnblogs.com/geekygeek ...
- 有没有不适合使用flex/lex作为词法分析器的语言?(摘自知乎)
本问题及解答摘自本人知乎 http://www.zhihu.com/people/chaos-xie http://www.zhihu.com/question/29922657 感谢知乎网友的回 ...
- 【多校联合】(HDU6045)Is Derek lying?
分析 之前没有想到题目解法,看了题解才会,记录一下思考过程. 这条题目的实质是,在满足合法的情况下,有没有a和d的可行解?也就是说,不要仅仅附在表面的思考逻辑条件,而是要思考实际的数学表达. 转化为数 ...
- C++学习011-常用内存分配及释放函数
C++用有多种方法来分配及释放内存,下面是一些经常使用的内存分配及释放函数 现在我还是一个技术小白,一般用到也指示 new+delete 和 malloc和free 其他的也是在学习中看到,下面的文字 ...
- HDFS伪分布式
(一).HDFS shell操作 以上已经介绍了如何搭建伪分布式的Hadoop,既然环境已经搭建起来了,那要怎么去操作呢?这就是本节将要介绍的内容: HDFS自带有一些shell命令,通过这些命令我们 ...
- Linux---CentOS 定时执行脚本配置
非常多时候我们有希望server定时去运行一个脚本来触发一个操作.比方使用七牛的工具上传,假设同步文件中面有新添加一个文件,这个时候我们能够提供定时脚本去完毕我们须要的同步命令(七牛的qrsbox工具 ...
- 什么是http?
http请求流程: http课程链接:http://www.imooc.com/video/6712/0
- MySQL 初识01
最近开始学习MySQL 所以将这两天所学习到的知识简单小结一下 1.status 显示数据库信息 2.数据类型: a.字符串: char(m):固定长度的字符,最多255个字符: varchar(m) ...