温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何进行CTAS和insert append的测试

发布时间:2022-01-19 11:21:39 来源:亿速云 阅读:93 作者:柒染 栏目:互联网科技

这篇文章跟大家分析一下“如何进行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 log
list
数据库日志模式             非存档模式
自动存档             启用
存档终点            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 Global
Area   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的测试就分享到这里啦,希望上述内容能够让大家有所提升。如果想要学习更多知识,请大家多多留意小编的更新。谢谢大家关注一下亿速云网站!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI