sqlldr与impdp模式与并行区别

效率:direct path> external table > conventional

1. 导出模式说明:
expdp有两种模式direct path, external table
exp有两种模式direct path, conventional

direct path是直接从数据文件的block不经过SGA读入到PGA,再通过API进行转化为dumpfile格式 
expdp与exp的转化方法不同,导致dumpfile格式不同
虽然expdp/exp都进行了格式转化,但它们各自导出的dumpfile格式与通过其它方式导出的格式是一样的
expdp的dumpfile格式与oracle block十分相似,这导致转化工作量很少:
The dump file storage format is the internal stream format of the direct path API. 
This format is very similar to the format stored in Oracle database data files inside of tablespaces. 

conventional与external table的方式其实都是通过SQL层,即走了SGA
不同在于它们是否能单work process进行并发查询与并发DML:
external table可以并发,它本质是创建一个外部表,再用insert /*append */ into table select进行插入
single worker processes can choose intrapartition parallelism through multiple parallel queries and parallel DML I/O server processes when the external tables method is used to access data.
conventional不能并发:如果想并发只能使用多个work processes,但exp是没有parallel选项的,要手动实际parallel, 你要先手动把表分区,再分虽执行exp导出


2. 导入模式说明:
sqlldr(只能导入)与impdp均支持direct path, external table, conventional三种模式,imp只支持conventional

direct path:
上面已经说了direc path,导入即相反过程:
数据文件->PGA ->格式转化为oracle block -> 直接存于段HWM以上的block
sqlldr是读入数据文件与dumpfile不同,所以转化的API也不同

external table与external table的方式其实都是通过SQL层,即走了SGA, 插入的是HWM以下的block
不同在于它们是否能单work process能并行insert
external table可以并发,它本质是创建一个外部表,再用insert /*append */ into table select进行插入
conventional不能并发insert, 如果想并发只能使用多个work processes:
impdp的conventional支持parallel,即可以有多个work process并发插入
sqlldr的conventional不支持parallel, 所以你要先手动把数据文件split, 再执行多个sqlldr导入(同imp)


3. 关于parallel:
parallel的原理就是把任务(文件或表数据)分成多份,使用不同work process来分别完成,这样并发不会导致冲突
如果命令提供了parallel则直接使用选项即可,但未提供就要手动完成上面的过程 

expdp/impdp所有模式下均提供了parallel选项,自动分割任务(通过dumpfile=xxx%U.dmp, 无论是导入导出文件数应大于等于parallel数),生成多个work process完成,它是段内并发
sqlldr的direct path虽然提供了parallel选项,但你要手动完成文件分割,并没自动生成work process
(使用parallel=true只是表示各session导入到不同临时表,最后merge到实际表中,只是让它实现了段内并发,不要parallel只能顺序导入):
    sqlldr  scott/tiger control=example1.ctl  direct=true parallel=true  file='/dat/users01.dat'
    sqlldr  scott/tiger control=example2.ctl  direct=true parallel=true  file='/dat/users02.dat'
    sqlldr  scott/tiger control=example3.ctl  direct=true parallel=true  file='/dat/users03.dat'
sqlldr的external table的parallel选项也并也是产生多work process,而是设置single work process的insert的并发度
sqlldr的conventional不支持parallel


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值