我们可以使用直接路径的方式插入数据,绕过sga,但是直接路径的方式不会共享数据,也可以将在插入的时候关闭日志,提高插入的速度,但对于数据而言安全性回降低。
以下是实验:
SQL> drop table t purge;
Table dropped.
SQL> create table t as select * from dba_objects where 1=2;
Table created.
----普通插入
SQL> set timing on
SQL> insert into t select * from dba_objects;
86370 rows created.
Elapsed: 00:00:01.52
SQL> rollback;
Rollback complete.
---直接路径插入
Elapsed: 00:00:00.07
SQL> insert /*+append */ into t select * from dba_objects;
86370 rows created.
Elapsed: 00:00:00.39
SQL>
SQL> rollback;
Elapsed: 00:00:00.01
----关闭日志的方式insert数据
SQL> insert /* nologging */ into t select * from dba_objects;
86370 rows created.
Elapsed: 00:00:00.29
Rollback complete.
---直接路径插入+关闭日志的方式
Elapsed: 00:00:00.02
SQL> insert /*+append nologging */ into t select * from dba_objects;
86370 rows created.
Elapsed: 00:00:00.22
以下是实验:
SQL> drop table t purge;
Table dropped.
SQL> create table t as select * from dba_objects where 1=2;
Table created.
----普通插入
SQL> set timing on
SQL> insert into t select * from dba_objects;
86370 rows created.
Elapsed: 00:00:01.52
SQL> rollback;
Rollback complete.
---直接路径插入
Elapsed: 00:00:00.07
SQL> insert /*+append */ into t select * from dba_objects;
86370 rows created.
Elapsed: 00:00:00.39
SQL>
SQL> rollback;
Elapsed: 00:00:00.01
----关闭日志的方式insert数据
SQL> insert /* nologging */ into t select * from dba_objects;
86370 rows created.
Elapsed: 00:00:00.29
Rollback complete.
---直接路径插入+关闭日志的方式
Elapsed: 00:00:00.02
SQL> insert /*+append nologging */ into t select * from dba_objects;
86370 rows created.
Elapsed: 00:00:00.22
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30345407/viewspace-2150366/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30345407/viewspace-2150366/
本文介绍了在Oracle数据库中进行批量数据插入的不同方法及其性能对比。包括普通插入、直接路径插入、关闭日志插入以及结合直接路径与关闭日志的插入方式,并通过实验展示了各种方法的执行时间和效率。
264

被折叠的 条评论
为什么被折叠?



