提示append:insert /*+ APPEND */ .. SELECT

2. append方式批量插入的记录,其存储位置在hwm之上,即使hwm之下存在空闲块也不能使用。

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 inserial mode, and direct-pathINSERT is the default in parallel mode. //表示insert /*+ APPEND */.. SELECT语句是自动运行在并行化模式下的。

In direct-path INSERT, data is appended to the end of the table, rather than using existing space currently allocated to the table. As a result, direct-path INSERT can be considerably faster than conventional INSERT.

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

例如,insert /*+ APPEND */  into test1 select * from dba_objects;



3. append方式插入记录后,要执行commit,才能对表进行查询。否则会出现错误:

ORA-12838: 无法在并行模式下修改之后读/修改对象


注释:


高水线

所有的Oracle表都有一个容纳数据的上限(很象一个水库历史最高的水位),我们把这个上限称为“high water mark”或HWM。这个HWM是一个标记(专门有一个数据块用来记录高水标记等,就是说表所在的段头块里有一个记录高水线的标记位),用来说明已经有多少数据块分配给这个表. HWM通常增长的幅度为一次5个数据块.
delete语句不影响表所占用的数据块, 高水线(high watermark)保持原位置不动
truncate 语句缺省情况下空间释放,除非使用reuse storage;   truncate会将高水线复位


《实例对比Oracle中truncate和delete的区别》


参考:

http://yunjuanyunsu.blog.163.com/blog/static/18931724220107246141408/


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


百度   insert/*+append*/

你可能感兴趣的:(hits,高水位)