Oracle远程附加数据的几种方法与性能比较

        以下方法主要针对海量数据入库及迁移时应用,测试的方法与结果仅供参考。理论上向本地表中附加数据将会产生大量redo数据(和较少的undo数据),随着时间的增长,数据将占用大量的磁盘空间不能释放,而且在数据备份及时的情况下,不需要redo恢复数据,所以在实际应用中应当尽量避免redo的产生。本次测试针对”Create table select”、”Copy”、” Insert into select”三种数据附加语句进行比较,尤其是当附加数据不在本地时,对时间效率和存储空间的占用情况进行测试。 

1.   测试步骤

1)       建立远程测试表tmp,向其中插入2,200,000条数据,记录数据文件大小。

2)       建立dblink连接tmp表的实例。

3)       新建表tmp_insert使用” Insert into select”语句进行数据附加,记录数据文件大小、附加时间、redo段大小。

4)       使用” Create table tmp_create select”语句进行数据附加,记录数据文件大小、附加时间、redo段大小。

5)       新建表tmp_copy使用”copy”语句进行数据附加,记录数据文件大小、附加时间、redo段大小。

6)       新建压缩表tmp_copy_press使用”copy”语句进行数据附加,记录数据文件大小、附加时间、redo段大小。

7)       新建压缩表tmp_insert_press使用” Insert /*+append */ intoselect”语句加入nologging参数进行数据附加,记录数据文件大小、附加时间、redo段大小。

2.   数据统计

a)       Tmp表数据文件大小统计

b)       tmp_insert表数据文件大小统计

耗时72.562s

Redo段统计

c)       tmp_create表数据文件大小统计

耗时52.515s

Redo段统计

d)       执行过程

tmp_copy表数据文件大小统计

耗时154s

Redo段统计

e)       执行过程

tmp_copy_press表数据文件大小统计

耗时154s

Redo段统计

f)        tmp_insert_press表数据文件大小统计

耗时82.875s

Redo段统计

 

3.   对比结果

 

数据文件大小

耗时

Redo段大小

Insert

591M

72.562s

592904384

Create

592M

52.515

690852

Copy

592M

154s

0

Copy压缩表

533M

154s

0

Insert压缩表

256M

82.875s

2095060

 

4.   结论

i.             ” Insert into select”产生大量redo,优点是通用的sql语句,支持大多数数据库平台,适合少量数据附加。

ii.             ”Create table select”不产生redo,附加数据时间少,但是必须在表未建立的情况下附加。

iii.             ”Copy”不产生redo,附加数据时间长,支持表存在情况下的大量数据的附加,但必须在oracle的sqlplus下执行,不支持pl/sql。

iv.             ”Copy”不支持压缩表批量附加压缩功能。

v.             ” Insert /*+append */ into select”加入nologging参数后,产生少量的redo,并且支持表压缩,适合大数据量的附加数据。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值