ITPub博客

首页 > 数据库 > Oracle > 直接加载和并行记载-01

直接加载和并行记载-01

原创 Oracle 作者:dotaddjj 时间:2011-10-27 22:28:45 0 删除 编辑

不久之前记得做过几个测试关于nologging和append的产生redo的。看并行和直接加载刚好有点需要记载的地方就贴blog上了。

直接路径加载将直接绕过buffer cache将数据直接写入磁盘。而且会把数据写入HWM以上的数据块中,所以一般直接路径加载速度上可能比常规加载快。

直接路径加载既可以并行 也可以串行,对分区表和普通表都可以。

Insert /*+append*/ into tt07 select * from dba_objects

当然如果是insert into …values单条插入方式,oracle10G中没有此项功能,网友说到在11G中可以insert /*+append_values*/ into tt07 values( ),不过个人没有11G的测试库也没有测试。

Sql>create table tt07 as select * from dba_objects where 1<>1

Sql>alter table tt07 nologging

SQL> insert into tt07 select * from dba_objects;

已创建48482行。

统计信息

----------------------------------------------------------

628 recursive calls

3990 db block gets

5857 consistent gets

0 physical reads

5468060 redo size

SQL> rollback;

回退已完成。

SQL> insert /*+append*/ into tt07 select * from dba_objects;

已创建48482行。

统计信息

----------------------------------------------------------

168 recursive calls

731 db block gets

4323 consistent gets

0 physical reads

9888 redo size

数据库是oracle 10G 归档模式,虽然表设置了logging模式,但是个人测试发觉首先是nologging和append都不能缺少才能大幅减少redo。但是这里oracle认为不是append直接插入就不管nologging模式还是写入大量redo吗?

其他要点:

如果表有索引dml性能肯定会下降,同样直接加载时也最好alter index indexname unusable 然后再重用索引,同样直接加载会消耗大量的空间。而且加载时表是exclusive模式,不能对其重建索引和dml,这也是需要考虑的地方。

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25362835/viewspace-1056002/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 跳跃索引测试
请登录后发表评论 登录
全部评论
  • 博文量
    220
  • 访问量
    1662981