来源于:http://www.cnblogs.com/rootq/archive/2009/02/11/1388043.html

SQL> select count(*) from t;
COUNT(*)
----------
5442048
****************************
SQL> alter table t1 nologging;
SQL> insert /*+append*/ into t1
2 select * from t;
5442048 rows created.
Elapsed: 00:00:55.73
****************************
SQL> create table t1 nologging parallel(degree 2) as select * from t;
Table created.
Elapsed: 00:00:56.79
********************************
SQL> insert /*+APPEND */ into t1
2 select /*+ parallel(t,4) */ * from t;
5442048 rows created.
Elapsed: 00:01:38.39
***********************************
alter table t1 nologging;
SQL> insert into t1
2 select * from t;
5442048 rows created.
Elapsed: 00:01:46.18
***********************************

SQL> alter table t1 logging;
Table altered.
SQL> insert into t1
2 select * from t;
5442048 rows created.
Elapsed: 00:02:03.51
*********************************
SQL> create table t1
2 as
3 select * from t;
Table created.
Elapsed: 00:03:03.34

insert 和 insert /*+append*/对hwm的影响
(1) insert 

[email=sys@ORCL%3Ecreate]sys@ORCL>create[/email] table t_hwmtablespace hwm as select * from all_objects; 
表已创建。

[email=sys@ORCL%3Eselect]sys@ORCL>select[/email]count(*) from t_hwm; 
COUNT(*) 
---------- 
50176 
已选择 1 行。

[email=sys@ORCL]sys@ORCL[/email]> 
[email=sys@ORCL%3Edelete]sys@ORCL>delete[/email] from t_hwm; 
已删除50176行。

[email=sys@ORCL%3Eexec]sys@ORCL>exec[/email]show_space('t_hwm','auto') 
Total Blocks............................5120 
Total Bytes.............................41943040 
Unused Blocks...........................4429 
Unused Bytes............................36282368 
Last Used Ext FileId....................10 
Last Used Ext BlockId...................5129 
Last Used Block.........................691 
PL/SQL 过程已成功完成。

[email=sys@ORCL%3Einsert]sys@ORCL>insert[/email]into t_hwm select * from all_objects where rownum < 2000; 
已创建1999行。

[email=sys@ORCL%3Eexec]sys@ORCL>exec[/email]show_space('t_hwm','auto') 
Total Blocks............................5120 
Total Bytes.............................41943040 
Unused Blocks...........................4429 
Unused Bytes............................36282368 
Last Used Ext FileId....................10 
Last Used Ext BlockId...................5129 
Last Used Block.........................691 
--在插入HWM下数据量时,不会修还HWM 
PL/SQL 过程已成功完成。

[email=sys@ORCL%3Einsert]sys@ORCL>insert[/email]into t_hwm select * from all_objects ; 
已创建50176行。

[email=sys@ORCL%3Eexec]sys@ORCL>exec[/email]show_space('t_hwm','auto') 
Total Blocks............................5120 
Total Bytes.............................41943040 
Unused Blocks...........................4374 
Unused Bytes............................35831808 
Last Used Ext FileId....................10 
Last Used Ext BlockId...................5129 
Last Used Block.........................746 
PL/SQL 过程已成功完成。

--在插入大量数据量时,超过HWM时增加HWM 
(2) insert /*+ append */ into 
[email=sys@ORCL%3Edelete]sys@ORCL>delete[/email]from t_hwm; 
已删除52175行。

[email=sys@ORCL%3Eexec]sys@ORCL>exec[/email]show_space('t_hwm','auto') 
Total Blocks............................5120 
Total Bytes.............................41943040 
Unused Blocks...........................4374 
Unused Bytes............................35831808 
Last Used Ext FileId....................10 
Last Used Ext BlockId...................5129 
Last Used Block.........................746 
PL/SQL 过程已成功完成。

[email=sys@ORCL%3Einsert]sys@ORCL>insert[/email]/*+ append */ into t_hwm select * from all_objects where rownum 
< 2000; 
已创建1999行。

[email=sys@ORCL%3Eexec]sys@ORCL>exec[/email]show_space('t_hwm','auto') 
Total Blocks............................5120 
Total Bytes.............................41943040 
Unused Blocks...........................4374 
Unused Bytes............................35831808 
Last Used Ext FileId....................10 
Last Used Ext BlockId...................5129 
Last Used Block.........................746 
PL/SQL 过程已成功完成。

[email=sys@ORCL%3Einsert]sys@ORCL>insert[/email]/*+ append */ into t_hwm select * from all_objects where rownum
< 20000;
[email=sys@ORCL%3Ecommit]sys@ORCL>commit[/email];
提交完成。
[email=sys@ORCL%3Einsert]sys@ORCL>insert[/email]/*+ append */ into t_hwm select * from all_objects where rownum
< 20000;
已创建19999行。
[email=sys@ORCL%3Eexec]sys@ORCL>exec[/email]show_space('t_hwm','auto')
Total Blocks............................5120
Total Bytes.............................41943040
Unused Blocks...........................4349
Unused Bytes............................35627008
Last Used Ext FileId....................10
Last Used Ext BlockId...................5129
Last Used Block.........................771
PL/SQL 过程已成功完成。

1. append方式添加记录对insert into ... values语句不起作用。
2. 以append方式批量插入的记录,其存储位置在hwm 之上,即使hwm之下存在空闲块也不能使用。
3. 以append方式插入记录后,要执行commit,才能对表进行查询。否则会出现错误:
ORA-12838: 无法在并行模式下修改之后读/修改对象
4. 在归档模式下,要把表设置为nologging,然后以append方式批量添加记录,才会显著减少redo数量。在非归档模式下,不必设置表的 nologging属性,即可减少redo数量。如果表上有索引,则append方式批量添加记录,不会减少索引上产生的redo数量,索引上的redo 数量可能比表的redo数量还要大
5. 同 nologging 配合会更快的,使用新的BLOCK 而不使用FREELIST中的块 增加插入速度,使用这个hint可以将数据使用直接路径插入到表的高水线之后,由于是连续的没有使用的空间,所以插入速度快。就是说直接插入,减少了搜索块的时间.

会在一定程度上造成空间浪费
请看oracle文挡中的描述:
APPEND
The APPEND hint lets you enable direct-path INSERT if your database is runningin serial mode. Your database is in serial mode if you are not using EnterpriseEdition. Conventional INSERT is the default in serial mode, and direct-pathINSERT is the default in parallel mode.
In direct-path INSERT, data is appended tothe end of the table, rather than using existing space currently allocated tothe table. As a result, direct-path INSERT can be considerably faster than conventionalINSERT.

SQL语句中的优化提示
APPEND : Only valid for INSERT .. SELECT. Allows INSERT to work like directload or to perform parallel insert.

关于insert /*+ append*/ 各种insert插入速度比较的更多相关文章

  1. insert /*+APPEND*/ 各种insert 插入速度比较

    SQL> select count(*) from t;COUNT(*)----------5442048****************************SQL> alter ta ...

  2. insert /*+append*/为什么会提高性能

    在上一篇的blog中 做了下使用,在归档和非归档下,做数据插入http://blog.csdn.net/guogang83/article/details/9219479.结论是在非归档模式下表设置为 ...

  3. 【Python算法】列表中的 append 比 insert 效率高的实质

    append 与 insert 对比: # append 操作 >>> count = 10**5 >>> nums = [] >>> for i ...

  4. Oracle insert /*+ APPEND */原理解析

    https://blog.csdn.net/xiaobluesky/article/details/50494101 关于insert /*+ append */我们需要注意以下三点: a.非归档模式 ...

  5. ORACLE数据库测试数据插入速度[z]

    一,没有优化的速度:Executed in 69.436 seconds drop table t purge;create table t(x int);/*清空共享池,注意在生产环境中千万不能做这 ...

  6. [JDBC]批量提交插入语句以提高数据插入速度(效率提升不明显)

    // Initialize conn&stmt Connection conn=null; Statement stmt=null; ... conn=dataSource.getConnec ...

  7. sqlite3 多线程和锁 ,优化插入速度及性能优化

    一. 是否支持多线程?   SQLite官网上的"Is SQLite threadsafe?"这个问答. 简单来说,从3.3.1版本开始,它就是线程安全的了.而iOS的SQLite ...

  8. 关于Mysql表InnoDB下插入速度慢的解决方案

    最近做了 server_log 日志数据库记录,仅仅插入,由平台来获取数据进行分析的需求. 但是内部反馈插入数据库记录非常耗时,我就很纳闷了,一个insert怎么会 30-50ms 呢?按说应该在 0 ...

  9. INSERT IGNORE 与INSERT INTO的区别

      INSERT IGNORE 与INSERT INTO的区别就是INSERT IGNORE会忽略数据库中已经存在 的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据.这样就可以 ...

随机推荐

  1. 比较TFS与SVN,你必须知道的10点区别

      相比SVN,对于TFS的优点我有以下几点看法,供大家参考: 1. 总体比较: TFS是一个应用软件生命周期管理(ALM)软件,是一个软件研发平台产品,其功能覆盖了软件研发过程中的所有环节(包括源代 ...

  2. 手机打开PDF文档中文英文支持(乱码问题)解决攻略

    电子书的优点很多,随时随地阅读,无论白天黑夜走路坐车都能阅读:想确认一下某句话是不是这本书里的,搜索一下就可以知道:搬家也不用发愁,几万本书带在身上,依然轻松步行.我买了一台平板主要动因就是为了看书, ...

  3. MyEclipse 启动 tomcate 失败 解决方法

    MyEclipse中启动tomcate失败 十月 20, 2015 9:53:04 下午 org.apache.catalina.startup.VersionLoggerListener log信息 ...

  4. IntelliJ IDEA 将 Maven 构建的 Java 项目打包

    前言 IntelliJ IDEA 编译生成 Jar 包的方式与 Eclipse 不同,如何将此 Maven 构建 Java 推荐引擎项目生成 Jar 包确实搜索了不少资料,有成功的有失败的,特将此验证 ...

  5. 【温故而知新-Javascript】使用 Ajax

    Ajax 是现代Web 应用程序开发的一项关键工具.它让你能向服务器异步发送和接收数据,然后用 Javascript 解析. Ajax 是 Asynchronous JavaScript and XM ...

  6. CF723D. Lakes in Berland[DFS floodfill]

    D. Lakes in Berland time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  7. NOIP1999邮票面值设计[搜索|DP]

    题目描述 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤40)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值MAX,使在1-MAX之间的每一个邮资值都能得到 ...

  8. NOIP2011多项式系数[快速幂|组合数|逆元]

    题目描述 给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数. 输入输出格式 输入格式: 输入文件名为factor.in. 共一行,包含5 个整数,分别为 a ,b ,k , ...

  9. Apache和Tomcat区别

    Apache 和 Tomcat 都是web网络服务器,两者既有联系又有区别,在进行HTML.PHP.JSP.Perl等开发过程中,需要准确掌握其各自特点,选择最佳的服务器配置.Apache是web服务 ...

  10. Eclipse块选取的情况 shift+tab 是块向前缩进

    Eclipse块选取的情况 shift+tab 是块向前缩进