大对象对数据库导出/导入性能的影响

本文详细阐述了在Oracle数据库中导出和导入包含LOB列的表时,性能较慢的问题,并提供了相应的解决策略。通过实验对比不同版本Oracle数据库的性能表现,分析了LOB列对导出和导入操作的影响。建议在不必要的情况下避免使用LOB列,或者考虑使用Transport Tablespace导出方式、升级到Oracle 10g并利用DataPump进行导出和导入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


Export and Import of Table with LOB Columns (like CLOB and BLOB) has Slow Performance
 
Doc ID:Note:281461.1Type:PROBLEM
 Last Revision Date:02-SEP-2004Status:PUBLISHED

The information in this article applies to:
- Oracle Server - Enterprise Edition - Version: 8.1.7.0 to 10.2.0.0
- Oracle Server - Personal Edition   - Version: 8.1.7.0 to 10.2.0.0
- Oracle Server - Standard Edition   - Version: 8.1.7.0 to 10.2.0.0
This problem can occur on any platform.

SYMPTOMS
--------
An export or import of a table with a Large Object (LOB) column,
has a slower performance than an export or import of a table without LOB
columns:
-- create two tables: TESTTAB1 with a VARCHAR2 column, and TESTTAB2 with a
-- CLOB column:
connect / as sysdba
create table scott.testtab1 (nr number, txt varchar2(2000));
create table scott.testtab2 (nr number, txt clob);
-- populate both tables with the same 500,000 rows:
declare
 x varchar2(50);
begin
  for i in 1..500000 loop
   x := 'This is a line with the number: ' || i;
   insert into scott.testtab1 values(i,x);
   insert into scott.testtab2 values(i,x);
   commit;
  end loop;
end;
/
-- export both tables:
% exp system/manager file=exp_testtab1.dmp tables=scott.testtab1 direct=y
% exp system/manager file=exp_testtab1a.dmp tables=scott.testtab1
% exp system/manager file=exp_testtab2.dmp tables=scott.testtab2
               No CLOB      No CLOB    With CLOB
                DIRECT CONVENTIONAL       column
          ------------ ------------ ------------
 8.1.7.4.0        0:13         0:20         7:49
 9.2.0.4.0        0:14         0:18         7:37
 9.2.0.5.0        0:12         0:15         7:03
10.1.0.2.0        0:16         0:31         7:15
Note:
  These performance results should not be considered as a benchmark
  of the performance between different Oracle versions, as the test
  databases were located on different machines with different hardware,
  and the databases had a different parameter configuration.
  The main objective of these results is to give an indication of the
  difference in the time that is needed to export a table with a LOB
  column, and a table without a LOB column.
-- cleanup after running the test:
connect / as sysdba
drop table scott.testtab1;
drop table scott.testtab2;

CHANGES
-------
You recently created tables that have Large Object (LOB) columns.

CAUSE
-----
This is expected behavior. The rows of a table with a LOB column are fetched
one row at a time. Also note that rows in tables that contain objects and
LOBs will be exported using conventional path, even if direct path was
specified.
Also during import, the rows of tables containing LOB columns are inserted
individually.

FIX
---
Although the performance of the export cannot be improved directly, possible
alternative solutions are:
1. If not required, do not use LOB columns.
or:
2. Use Transport Tablespace export instead of full/user/table level export.
or:
3. Upgrade to Oracle10g and use Export DataPump and Import DataPump.
 
我的测试:
=======================================
Tue Jan 29 10:26:06 CST 2008
Export: Release 9.2.0.6.0 - Production on Tue Jan 29 10:26:06 2008
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

Connected to: Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.6.0 - Production
Export done in AL32UTF8 character set and AL16UTF16 NCHAR character set
About to export specified tables via Direct Path ...
Current user changed to SCOTT
. . exporting table                       TESTTAB1     500000 rows exported
Export terminated successfully without warnings.
Tue Jan 29 10:26:11 CST 2008
=======================================
50万条记录,无lob对象,direct路径导出,耗时5秒
 
 
=======================================
Export: Release 9.2.0.6.0 - Production on Tue Jan 29 10:26:11 2008
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

Connected to: Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.6.0 - Production
Export done in AL32UTF8 character set and AL16UTF16 NCHAR character set
About to export specified tables via Conventional Path ...
Current user changed to SCOTT
. . exporting table                       TESTTAB1     500000 rows exported
Export terminated successfully without warnings.
Tue Jan 29 10:26:18 CST 2008
 
=======================================
50万条记录,无lob对象,Conventional路径导出,耗时7秒
 
 
=======================================
Export: Release 9.2.0.6.0 - Production on Tue Jan 29 10:26:18 2008
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

Connected to: Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.6.0 - Production
Export done in AL32UTF8 character set and AL16UTF16 NCHAR character set
About to export specified tables via Conventional Path ...
Current user changed to SCOTT
. . exporting table                       TESTTAB2     500000 rows exported
Export terminated successfully without warnings.
Tue Jan 29 10:29:19 CST 2008
=======================================
50万条记录,含lob对象,只能Conventional路径导出,耗时181秒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值