常见dml、ddl语句使用nologging选项所生成的redo和undo大小比较

说明:反映undo、redo占用量的统计指标是:

undo change vector size

redo size

 


DDL/DML Operations


Direct-path


nologging


parallel


noarchivelog mode


archivelog mode


Redo


Undo


Redo


Undo


Insert into XXX select * from YYY


N


N


N


19076324


627240


18938620


612980


Alter table XXX nologging;

Insert into XXX select * from YYY;


N


Y


N


19085860


631584


18935548


612912


Insert /*+ append */ into XXX select *
from YYY


Y


N


N


26628


4048(only metadata)


19145656


4048


Alter table XXX nologging;

Insert /*+ append */ into XXX select *
from YYY


Y


Y

 


N


26868

 


4048(only metadata)

 


26836

 


4048

 


Create table XXX as select * from YYY


Y


N


N


77624


18500


19162220


15468


Create table XXX nologging as select *
from YYY


Y


Y

 


N


52160

 


11176

 


52408


11248


Alter table XXX move nologging;


N


Y


N


36288

 


6208

 


36576


6208


Alter table XXX move;


N


N


N


39788


7288


19154024


5972


Create index XXX


N


N


N


21280


1864


3093616


1888


Create index XXX nologging


N


Y


N


22264


2208


22620


2232


update XXX set


N


N


N


122903212


47987880


122403692


47786680


Update /*+ parallel(5) */ XXX set


N


N


Y(Queries)


121629928


46706296


120818336


46466056


Alter table XXX nologging;

update XXX set


N


Y


N


123155288


48006404


110396512


41617700


Alter table XXX nologging;

update /*+ parallel(5) */ XXX set


N


Y


Y(Queries)


119748064


46152324


120205036


46261536


Alter session enable parallel dml

Update /*+ parallel(5) */ XXX set


N


N


Y(DML)


59846488


24680220


59740516


24611672


Alter table XXX nologging;

Alter session enable parallel dml

Update /*+ parallel(5) */ XXX set


N


Y


Y(DML)


59831756


24673396


59717116


24602628


delete XXX;


N


N


N


60684720


37650208


61770472


38254648


delete /*+parallel(5) */ XXX;


N


N


Y(Queries)


60685416


37650436


61988568


38461832


Alter table XXX nologging;

delete XXX;


N


Y


N


60684956


37650216


61989984


38460424


Alter table XXX nologging;

delete /*+parallel(5) */ XXX;


N


Y


Y(Queries)


60685092


37650224


61986156


38459172


Alter session enable parallel dml

delete /*+parallel(5) */ aabbn;


N


N


Y(DML)


65072896


40990412


61979216


38457372


Alter table XXX nologging;

Alter session enable parallel dml

delete /*+parallel(5) */ aabbn;


N


Y


Y(DML)


65073828


40998048


62022668


38500548

 

结论:

1、insert
into
:非direct方式下noarchivelog和archivelog两种模式均产生大量undo、redo;direct方式下noarchivelog模式均产生少量undo、redo;direct+logging方式下archivelog模式产生少量undo、大量redo;direct+nologging方式下archivelog模式产生少量undo、少量redo

 

2、create
table as
:CTAS本身就是一种direct的操作,CTAS+logging方式下noarchivelog模式产生少量redo、少量undo;CTAS+nologging方式下noarchivelog模式产生更少量redo、更少量undo;CTAS+logging方式下archivelog模式产生少量undo、大量redo;CTAS+nologging方式下archivelog模式产生少量undo、少量redo

 

3、alter
table ... move
:nologging方式下noarchivelog模式产生少量undo、少量redo;nologging方式下archivelog模式产生少量undo、少量redo;logging方式下archivelog模式产生少量undo、大量redo

 

4、create
index
:logging+nologging方式下noarchivelog模式产生少量undo、少量redo;logging方式下archivelog模式产生少量undo、大量redo;nologging方式下archivelog模式产生少量undo、少量redo

 

5、update:enable
parallel
方式下,noarchivelog+ archivelog模式生成少量undo、少量redo;非enable
parallel
方式下,noarchivelog+ archivelog模式生成大量undo、大量redo

 

6、delete:任何组合都会生成大量undo、大量redo

时间: 2024-08-01 18:13:37

常见dml、ddl语句使用nologging选项所生成的redo和undo大小比较的相关文章

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

[知识点整理]Oracle中NOLOGGING.APPEND.ARCHIVE和PARALLEL下,REDO.UNDO和执行速度的比较 1  BLOG文档结构图     2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 系统和会话级别的REDO和UNDO量的查询 ② NOLOGGING.APPEND.ARCHIVE和PARALLEL下,REDO.UNDO和执行速度的比较(重点)   Tips:

mysql双主问题-紧急求助:生产环境,mysql双主结构,备机同步DDL语句成功,但是同步DML语句失败

问题描述 紧急求助:生产环境,mysql双主结构,备机同步DDL语句成功,但是同步DML语句失败 问题描述:双主架构环境,最近在主机上执行DDL语句能成功同步到备机,但是在主机上执行DML语句失败,请各位帮忙看一下,谢谢! Linux版本: Red Hat Enterprise Linux Server release 5.4 (Tikanga) mysql版本 +----------------------------+ | @@version | +---------------------

oracle的DDL语句为什么不能回滚

在ITPUB上看到有人提出了这个问题.在Sqlserver或一些其他的数据库中,DDL语句也是可以回滚的,那么Oracle为什么不能回滚DDL语句呢. 要说明这个问题,首先需要说明什么是DDL语句.DDL语句是数据定义语句,包括各种数据对象的创建.修改和删除,以及授权等操作. 在Oracle中DDL语句将转化为修改数据字典表的DML语句.一个简单的修改表的DDL语句,会导致Oracle在后台通过递归SQL语句进行大量的查询和修改的操作. 如果有兴趣,可以通过SQL_TRACE根据一下DDL语句,

DBMS_METADATA包获得对象DDL语句

DBMS_METADATA包获得对象DDL语句 如何利用系统包DBMS_METADATA包中的GET_DDL函数来获取对象的定义语句.下面是该函数的入参和出参: SQL> DESC DBMS_METADATA.GET_DDL PARAMETER   TYPE     MODE DEFAULT? ----------- -------- ---- -------- (RESULT)    CLOB                    OBJECT_TYPE VARCHAR2 IN        

使用script查找DDL语句统计数据

在监控Oracle数据库的行为时,数据库管理员需要知道一个表或者索引的创建细节信息,例如日期和时间等.   在DBA_OBJECTS视图中,Oracle提供了一个新的叫做CREATED的栏,管理员可以使用它来显示对象创建时的数据.在实际开发中需要对DDL语句进行相关的审计时,这一栏可以作为鉴定的报告. 下面的script生成了一个很好的管理报告,它显示了过去14天内创建的所有表和索引. alter session set nls_date_format='YY-MON-DD HH24';set

oracle中获取表空间ddl语句

oracle|语句 ----------------------------------------------------------------------------------- create table ----------------------------------------------------------------------------------- create table bak_dba_tablesapce (ddl_txt varchar2(2000)); -

hibernate 搭建log4j日志环境,控制台为什么没有出现ddl语句?

问题描述 hibernate 搭建log4j日志环境,控制台为什么没有出现ddl语句? 日志的输出中只有info的信息,没有dubug的信息,没有出现执行的sql语句? 相关代码见博文:http://blog.csdn.net/hoho_12/article/details/50755986 感谢回答! 解决方案 可能是你的hibernate的日志文件配置问题,参考下这篇文章:http://www.thinksaas.cn/group/topic/328660/ 解决方案二: 在哪

PostgreSQL修炼之道:从小工到专家. 3.2 DDL语句

3.2 DDL语句 DDL语句是创建.修改和删除表的语句,想要掌握SQL语言,必须对它有一定的了解. 3.2.1 建表语句 表是关系型数据库中最基本的对象,数据库中的表与实际生活中的二维表格很相似,有很多列也有很多行,每一列有一个名称,不同的列有不同的数据类型,比如,列可能是数字.文本字符串,也可能是日期类型.建表语句的一个简单语法如下: CREATE TABLE table_name ( col01_namme data_type,        col02_namme data_type,

Oracle轻松取得建表和索引的DDL语句_oracle

我们都知道在9i之前,要想获得建表和索引的语句是一件很麻烦的事.我们可以通过export with rows=no来得到,但它的输出因为格式的问题并不能直接拿来用.而另一种方法就是写复杂的脚本来查询数据字典,但这对于一稍微复杂的对象,如IOT和嵌套表等,还是无法查到. 从数据字典中获得DDL语句是经常要用的,特别是在系统升级/重建的时候.在Oracle 9i中,我们可以直接通过执行dbms_metadata从数据字典中查处DDL语句.使用这个功能强大的工具,我们可以获得单个对象或整个SCHEMA