CTAS、Nologging以及数据库运行模式

iputb讨论链接:

http://www.itpub.net/showthread.php?threadid=242761

我们看以下测试:

SQL> archive log list Database log mode              No Archive Mode Automatic archival             Enabled Archive destination            /opt/oracle/oradata/hsjf/archive Oldest online log sequence     156 Current log sequence           158 SQL> @redo SQL> select * from redo_size;

     VALUE ----------      80892

SQL> create table test nologging as select * from dba_objects;

Table created.

SQL> select * from redo_size;

     VALUE ----------     118024

SQL> drop table test;

Table dropped.

SQL> select * from redo_size;

     VALUE ----------     139732

SQL> create table test as select * from dba_objects;

Table created.

SQL> select * from redo_size;

     VALUE ----------     176864

SQL> select (176864 -139732) redo2,(118024 -80892) redo1 from dual;

     REDO2      REDO1 ---------- ----------      37132      37132

SQL> drop table test;

Table dropped.

SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount; ORACLE instance started.

Total System Global Area  235999908 bytes Fixed Size                   451236 bytes Variable Size             201326592 bytes Database Buffers           33554432 bytes Redo Buffers                 667648 bytes Database mounted. SQL> alter database archivelog;

Database altered.

SQL> alter database open;

Database altered.

SQL> @redo SQL> select * from redo_size;

     VALUE ----------      35768

SQL> create table test nologging as select * from dba_objects;

Table created.

SQL> select * from redo_size;

     VALUE ----------      73860

SQL> drop table test;

Table dropped.

SQL> select * from redo_size;

     VALUE ----------      95596

SQL> create table test as select * from dba_objects;

Table created.

SQL> select * from redo_size;

     VALUE ----------    1215092

SQL> select (1215092 -95596) redo2,(73860 -35768) from dual;

     REDO2 (73860-35768) ---------- -------------    1119496         38092 .

结论:

显然ctas的Nologging在archivelog模式下才会不记录redo,而在Noarchivelog模式下会产生同样多的redo 在归档模式下的CTAS nologging应该等价于非归档模式下ctas + insert append

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java工会

十个mysql语句的优化方法

1986
来自专栏跟着阿笨一起玩NET

SET XACT_ABORT各种用法及显示结果

  2、每个语句作为一个事务,事务在错误行终止,错误行回滚,错误行之前的不回滚,格式为:

992
来自专栏抠抠空间

MySQL 如何删除有外键约束的表数据

今天删除数据库中数据,提示因为设置了foreign key,无法修改删除 可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。

1183
来自专栏www.96php.cn

mysql 快速生成百万条测试数据

1、生成思路 利用mysql内存表插入速度快的特点,先利用函数和存储过程在内存表中生成数据,然后再从内存表插入普通表中 2、创建内存表及普通表 CREATE T...

61612
来自专栏数据分析

[数据库基础]——编码标准之结构

数据库是由若干表构成,表是由数据行构成,数据行由若干列组成。由于数据库这样的结构,这就要求我们在构成数据库表时,需要注意一些问题。现在提出一些注意的问题。 1....

3275
来自专栏奇梦博客

Xiuno BBS 4.0 表结构 XiunoBBS

1021
来自专栏数据和云

运维技巧 - 活用临时表隔离冷热数据

编辑手记:Oracle给了我们很多工具,在日常数据库管理中活用这些工具方可发挥最大效能。 作者简介: 张洪涛 富士康 DBA 在数据库监控过程中发现考勤数据...

3885
来自专栏Ryan Miao

Postgres和MySQL创建用户并授予db权限

Postgresql和MySQL还是有很多不同的。就比如授权来说。当下有个业务场景,我们的报表数据库需要根据业务划分不同的db,然后创建对应的user。

1234
来自专栏吴柯的运维笔记

MySQL索引类型及用法

2017年9月13日 12:55 索引类型: ? index索引: ? 在已有表中创建index索引: create index 索引名 on 表名(字段名)...

3028
来自专栏jeremy的技术点滴

保存mysql InnoDB的auto_increment值另类方案

2725

扫码关注云+社区

领取腾讯云代金券