如何进行CTAS和insertappend的测试
这篇文章跟大家分析一下“如何进行CTAS和insert append的测试”。内容详细易懂,对“如何进行CTAS和insert append的测试”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“如何进行CTAS和insert append的测试”的知识吧。
成都创新互联"三网合一"的企业建站思路。企业可建设拥有电脑版、微信版、手机版的企业网站。实现跨屏营销,产品发布一步更新,电脑网络+移动网络一网打尽,满足企业的营销需求!成都创新互联具备承接各种类型的网站制作、成都做网站项目的能力。经过十载的努力的开拓,为不同行业的企事业单位提供了优质的服务,并获得了客户的一致好评。
8174上的一个测试,非归档模式:
代码:
SQL> select * from v$version;
BANNER---------------------------------------------------------------- Oracle8i Enterprise Edition Release 8.1.7.4.1 -Production
PL/SQL Release 8.1.7.4.0 -Production
CORE 8.1.7.2.1 Production
TNS for 32-bit Windows: Version 8.1.7.4.0 -Production
NLSRTL Version 3.4.1.0.0 -Production
SQL> archive loglist数据库日志模式 非存档模式
自动存档 启用
存档终点 D:databaseoracleora817RDBMS
最早的概要信息日志序列 1488
当前日志序列 1491
SQL> select * from redo_size;
VALUE----------
91848
SQL> create table test nologging as select * from all_objects;
表已创建。
SQL> select * from redo_size;
VALUE----------
147148
SQL> drop table test;
表已丢弃。
SQL> select * from redo_size;
VALUE----------
177584
SQL> create table test as select * from all_objects;
表已创建。
SQL> select * from redo_size;
VALUE----------
232892
SQL> select (232892 - 177584 ) redo,(147148-91848) redo_nolog from dual;
REDO REDO_NOLOG---------- ----------
55308 55300 '
在归档模式下的情况:代码:
SQL> shutdown immediate;数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>startup mount
ORACLE 例程已经启动。
Total System GlobalArea 65648668 bytes
Fixed Size 75804 bytes
Variable Size 44523520 bytes
Database Buffers 20971520 bytes
Redo Buffers 77824 bytes
数据库装载完毕。
SQL>alter database archivelog
2 /
数据库已更改。
SQL> alter database open;
数据库已更改。
SQL> drop table test;
表已丢弃。
SQL> select * from redo_size;
VALUE----------
30520
SQL> create table test as select * from all_objects;
表已创建。
SQL> select * from redo_size;
VALUE----------
2953668
SQL> drop table test;
表已丢弃。
SQL> select * from redo_size;
VALUE----------
3070020
SQL> create table test nologging as select * from all_objects;
表已创建。
SQL> select * from redo_size;
VALUE----------
3125328
SQL> select (2953668-30520) redo,(3125328-3070020) redo_nolog from dual;
REDO REDO_NOLOG---------- ----------
2923148 55308 '
在归档模式下的近一步测试,比较ctas和ctas无数据+ insert append 的redo size:代码:
SQL> drop table test;
表已丢弃。
SQL> select * from redo_size;
VALUE----------
3155764
SQL> create table test as select * from all_objects where 1=0;
表已创建。
SQL> insert /*+append*/into test select * from all_objects;
已创建25474行。
SQL> commit;
提交完成。
SQL> select * from redo_size;
VALUE----------
6079860
SQL> select (6079860-3155764) logging from dual;
(6079860-3155764)
-----------------
2924096
SQL> drop table test;
表已丢弃。
SQL> select * from redo_size;
VALUE----------
6110356
SQL> create table test nologging as select * from all_objects where 1=0;
表已创建。
SQL> insert /*+append*/ into test select * from all_objects;
已创建25474行。
SQL> commit;
提交完成。
SQL> select * from redo_size;
VALUE----------
6167588
SQL> select (6079860-3155764) logging ,(6167588-6110356)nologging from dual;
LOGGING NOLOGGING---------- ----------
2924096 57232 '
根据这个结果,我们看到:
noarchivelog下的CTAS 的redo=noarchivelog下的CTAS nologging的redo =archivelog下的CTAS nologging的redo
这三种情况下,都对系统产生了较少的redo size
只有在archivelog 下CTAS,才产生了较多的redo size
比较了CTAS和CTAS+insert append后,实际上(archivelog mode):
CTAS nologging redo =CTAS(no data) nologing +insert append redo size;
CTAS redo =CTAS(no data) +insert append redo size;
关于如何进行CTAS和insert append的测试就分享到这里啦,希望上述内容能够让大家有所提升。如果想要学习更多知识,请大家多多留意小编的更新。谢谢大家关注一下创新互联网站!
当前标题:如何进行CTAS和insertappend的测试
文章URL:http://ybzwz.com/article/jdighj.html