您的位置:首页 > 数据库 > Oracle

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

2013-05-01 22:09 429 查看
以下方法主要针对海量数据入库及迁移时应用,测试的方法与结果仅供参考。理论上向本地表中附加数据将会产生大量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,并且支持表压缩,适合大数据量的附加数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: