10g資料泵和匯入匯出效能對比(四)

yangtingkun發表於2008-03-17

前一段時間在一次遷移中同時用到了資料泵和EXP,發現二者效率的差別還是相當大的。這裡透過一個例子簡單比較一下。

這篇文章討論並行度對資料泵匯出的影響。

10g資料泵和匯入匯出效能對比(一):http://yangtingkun.itpub.net/post/468/321482

10g資料泵和匯入匯出效能對比(二):http://yangtingkun.itpub.net/post/468/323899

10g資料泵和匯入匯出效能對比(三):http://yangtingkun.itpub.net/post/468/328465

 

 

寫前幾篇文章的時候對資料泵還了解不多,最近閱讀文件發現,並行的設定也是有技巧的,如果設定的合理,可以明顯的提高匯出的效能。

首先還是看一下CPU的數量:

SQL> show parameter cpu

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cpu_count                            integer     2
parallel_threads_per_cpu             integer     2

根據文件的描述,並行度的設定不應該超過CPU數量的2倍,因此這裡最大並行度設定為4,對比一下不設定並行、設定並行但僅設定一個匯出檔案、設定並行並設定對應多個匯出檔案等幾種情況下的效能。

先看直接匯出的效能:

$ expdp zhejiang/zhejiang directory=d_test dumpfile=zhejiang.dp

Export: Release 10.2.0.3.0 - 64bit Production on 星期三, 16 1, 2008 22:51:43

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
啟動
"ZHEJIANG"."SYS_EXPORT_SCHEMA_01":  zhejiang/******** directory=d_test dumpfile=zhejiang.dp
正在使用 BLOCKS 方法進行估計
...
處理物件型別
SCHEMA_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計
: 22.64 GB
處理物件型別
SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
處理物件型別
SCHEMA_EXPORT/SYNONYM/SYNONYM
處理物件型別
SCHEMA_EXPORT/TYPE/TYPE_SPEC
處理物件型別
SCHEMA_EXPORT/DB_LINK
處理物件型別
SCHEMA_EXPORT/SEQUENCE/SEQUENCE
處理物件型別
SCHEMA_EXPORT/TABLE/TABLE
處理物件型別
SCHEMA_EXPORT/TABLE/INDEX/INDEX
處理物件型別
SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理物件型別
SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
處理物件型別
SCHEMA_EXPORT/TABLE/COMMENT
處理物件型別
SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC
處理物件型別
SCHEMA_EXPORT/FUNCTION/FUNCTION
處理物件型別
SCHEMA_EXPORT/PROCEDURE/PROCEDURE
處理物件型別
SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC
處理物件型別
SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION
處理物件型別
SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
處理物件型別
SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY
處理物件型別
SCHEMA_EXPORT/TYPE/TYPE_BODY
處理物件型別
SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
處理物件型別
SCHEMA_EXPORT/TABLE/TRIGGER
處理物件型別
SCHEMA_EXPORT/TABLE/INDEX/FUNCTIONAL_AND_BITMAP/INDEX
處理物件型別
SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_AND_BITMAP/INDEX_STATISTICS
處理物件型別
SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. .
匯出了 "ZHEJIANG"."ORD_HIT_COMM"                   3.255 GB 4176146

. .
匯出了 "ZHEJIANG"."ORD_ORDER_ITEM"                 1.890 GB 3226647
. .
匯出了 "ZHEJIANG"."CON_LIST_ITEM"                  4.505 MB    7985
. .
匯出了 "ZHEJIANG"."ORD_PURCHASE_ITEM"              1.281 GB 3238674
.
.
.
. .
匯出了 "ZHEJIANG"."UNC_PRODUCT_MAPTJ"                  0 KB       0
. .
匯出了 "ZHEJIANG"."UNC_SMS_USER_NEW"                   0 KB       0
. .
匯出了 "ZHEJIANG"."UNC_USER_NON"                       0 KB       0
. .
匯出了 "ZHEJIANG"."USR_USER_PLAT_ROLE"                 0 KB       0
已成功載入/解除安裝了主表 "ZHEJIANG"."SYS_EXPORT_SCHEMA_01"
******************************************************************************
ZHEJIANG.SYS_EXPORT_SCHEMA_01
的轉儲檔案集為
:
  /data1/zhejiang.dp
作業 "ZHEJIANG"."SYS_EXPORT_SCHEMA_01" 已於 23:06:01 成功完成

整個匯出操作大概用了14分半,下面嘗試使用並行度2進行匯出,這時仍然設定一個匯出的資料檔案:

$ expdp zhejiang/zhejiang directory=d_test dumpfile=zhejiang_p2_1file.dp parallel=2

Export: Release 10.2.0.3.0 - 64bit Production on 星期三, 16 1, 2008 23:13:10

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
啟動
"ZHEJIANG"."SYS_EXPORT_SCHEMA_01":  zhejiang/******** directory=d_test dumpfile=zhejiang_p2_1file.dp parallel=2
正在使用 BLOCKS 方法進行估計
...
處理物件型別
SCHEMA_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計
: 22.64 GB
處理物件型別
SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
. .
匯出了 "ZHEJIANG"."ORD_HIT_COMM"                   3.255 GB 4176146

處理物件型別 SCHEMA_EXPORT/SYNONYM/SYNONYM
處理物件型別
SCHEMA_EXPORT/TYPE/TYPE_SPEC
處理物件型別
SCHEMA_EXPORT/DB_LINK
處理物件型別
SCHEMA_EXPORT/SEQUENCE/SEQUENCE
處理物件型別
SCHEMA_EXPORT/TABLE/TABLE
處理物件型別
SCHEMA_EXPORT/TABLE/INDEX/INDEX
處理物件型別
SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理物件型別
SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
處理物件型別
SCHEMA_EXPORT/TABLE/COMMENT
處理物件型別
SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC
處理物件型別
SCHEMA_EXPORT/FUNCTION/FUNCTION
處理物件型別
SCHEMA_EXPORT/PROCEDURE/PROCEDURE
處理物件型別
SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC
處理物件型別
SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION
處理物件型別
SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
處理物件型別
SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY
處理物件型別
SCHEMA_EXPORT/TYPE/TYPE_BODY
處理物件型別
SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
處理物件型別
SCHEMA_EXPORT/TABLE/TRIGGER
處理物件型別
SCHEMA_EXPORT/TABLE/INDEX/FUNCTIONAL_AND_BITMAP/INDEX
處理物件型別
SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_AND_BITMAP/INDEX_STATISTICS
處理物件型別
SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. .
匯出了 "ZHEJIANG"."ORD_ORDER_ITEM"                 1.890 GB 3226647

. .
匯出了 "ZHEJIANG"."CON_LIST_ITEM"                  4.505 MB    7985
. .
匯出了 "ZHEJIANG"."ORD_LOG_HIT_COMM"               1.078 GB 1335486
. .
匯出了 "ZHEJIANG"."ORD_PURCHASE_ITEM"              1.281 GB 3238674
.
.
.
. .
匯出了 "ZHEJIANG"."UNC_SMS_USER_NEW"                   0 KB       0
. .
匯出了 "ZHEJIANG"."UNC_USER_NON"                       0 KB       0
. .
匯出了 "ZHEJIANG"."USR_USER_PLAT_ROLE"                 0 KB       0
已成功載入/解除安裝了主表 "ZHEJIANG"."SYS_EXPORT_SCHEMA_01"
******************************************************************************
ZHEJIANG.SYS_EXPORT_SCHEMA_01
的轉儲檔案集為
:
  /data1/zhejiang_p2_1file.dp
作業 "ZHEJIANG"."SYS_EXPORT_SCHEMA_01" 已於 23:27:02 成功完成

整個匯入過程不到14分鐘,不過這個效能的提升實在不是很明顯。不過這是有原因的,由於設定了並行度,兩個程式在同時執行匯出操作,但是二者要將匯出的資料寫入同一個資料檔案中,因此必然會導致資源的爭用。下面仍然使用並行度2,但是同時設定兩個資料檔案再次檢查匯出效能:

$ expdp zhejiang/zhejiang directory=d_test dumpfile=zhejiang_p2_2file1.dp,zhejiang_p2_2file2.dp parallel=2

Export: Release 10.2.0.3.0 - 64bit Production on 星期三, 16 1, 2008 23:28:08

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
啟動
"ZHEJIANG"."SYS_EXPORT_SCHEMA_01":  zhejiang/******** directory=d_test dumpfile=zhejiang_p2_2file1.dp,zhejiang_p2_2file2.dp parallel=2
正在使用 BLOCKS 方法進行估計
...
處理物件型別
SCHEMA_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計
: 22.64 GB
處理物件型別
SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
處理物件型別
SCHEMA_EXPORT/SYNONYM/SYNONYM
處理物件型別
SCHEMA_EXPORT/TYPE/TYPE_SPEC
處理物件型別
SCHEMA_EXPORT/DB_LINK
處理物件型別
SCHEMA_EXPORT/SEQUENCE/SEQUENCE
處理物件型別
SCHEMA_EXPORT/TABLE/TABLE
處理物件型別
SCHEMA_EXPORT/TABLE/INDEX/INDEX
處理物件型別
SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理物件型別
SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
處理物件型別
SCHEMA_EXPORT/TABLE/COMMENT
處理物件型別
SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC
處理物件型別
SCHEMA_EXPORT/FUNCTION/FUNCTION
處理物件型別
SCHEMA_EXPORT/PROCEDURE/PROCEDURE
處理物件型別
SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC
處理物件型別
SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION
處理物件型別
SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
處理物件型別
SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY
處理物件型別
SCHEMA_EXPORT/TYPE/TYPE_BODY
處理物件型別
SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
處理物件型別
SCHEMA_EXPORT/TABLE/TRIGGER
處理物件型別
SCHEMA_EXPORT/TABLE/INDEX/FUNCTIONAL_AND_BITMAP/INDEX
處理物件型別
SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_AND_BITMAP/INDEX_STATISTICS
處理物件型別
SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. .
匯出了 "ZHEJIANG"."ORD_HIT_COMM"                   3.255 GB 4176146

. .
匯出了 "ZHEJIANG"."CON_LIST_ITEM"                  4.505 MB    7985
. .
匯出了 "ZHEJIANG"."ORD_ORDER_ITEM"                 1.890 GB 3226647
. .
匯出了 "ZHEJIANG"."ORD_PURCHASE_ITEM"              1.281 GB 3238674
.
.
.
. .
匯出了 "ZHEJIANG"."UNC_PRODUCT_MAPTJ"                  0 KB       0
. .
匯出了 "ZHEJIANG"."UNC_SMS_USER_NEW"                   0 KB       0
. .
匯出了 "ZHEJIANG"."UNC_USER_NON"                       0 KB       0
. .
匯出了 "ZHEJIANG"."USR_USER_PLAT_ROLE"                 0 KB       0
已成功載入/解除安裝了主表 "ZHEJIANG"."SYS_EXPORT_SCHEMA_01"
******************************************************************************
ZHEJIANG.SYS_EXPORT_SCHEMA_01
的轉儲檔案集為
:
  /data1/zhejiang_p2_2file1.dp
  /data1/zhejiang_p2_2file2.dp
作業 "ZHEJIANG"."SYS_EXPORT_SCHEMA_01" 已於 23:38:42 成功完成

這次匯出僅僅用了10分半,匯出的效率大大的提高。最後測試一下並行度4,分別匯出到4個資料檔案中:

$ expdp zhejiang/zhejiang directory=d_test dumpfile=zhj_4_4_1.dp,zhj_4_4_2.dp,zhj_4_4_3.dp,zhj_4_4_4.dp parallel=4

Export: Release 10.2.0.3.0 - 64bit Production on 星期三, 16 1, 2008 23:40:24

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
啟動
"ZHEJIANG"."SYS_EXPORT_SCHEMA_01":  zhejiang/******** directory=d_test dumpfile=zhj_4_4_1.dp,zhj_4_4_2.dp,zhj_4_4_3.dp,zhj_4_4_4.dp parallel=4
正在使用 BLOCKS 方法進行估計
...
處理物件型別
SCHEMA_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計
: 22.64 GB
處理物件型別
SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
處理物件型別
SCHEMA_EXPORT/SYNONYM/SYNONYM
. .
匯出了 "ZHEJIANG"."CON_LIST_ITEM"                  4.505 MB    7985

處理物件型別 SCHEMA_EXPORT/TYPE/TYPE_SPEC
處理物件型別
SCHEMA_EXPORT/DB_LINK
處理物件型別
SCHEMA_EXPORT/SEQUENCE/SEQUENCE
處理物件型別
SCHEMA_EXPORT/TABLE/TABLE
處理物件型別
SCHEMA_EXPORT/TABLE/INDEX/INDEX
處理物件型別
SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理物件型別
SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
處理物件型別
SCHEMA_EXPORT/TABLE/COMMENT
處理物件型別
SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC
處理物件型別
SCHEMA_EXPORT/FUNCTION/FUNCTION
處理物件型別
SCHEMA_EXPORT/PROCEDURE/PROCEDURE
處理物件型別
SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC
處理物件型別
SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION
處理物件型別
SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
處理物件型別
SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY
處理物件型別
SCHEMA_EXPORT/TYPE/TYPE_BODY
處理物件型別
SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
處理物件型別
SCHEMA_EXPORT/TABLE/TRIGGER
處理物件型別
SCHEMA_EXPORT/TABLE/INDEX/FUNCTIONAL_AND_BITMAP/INDEX
處理物件型別
SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_AND_BITMAP/INDEX_STATISTICS
處理物件型別
SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. .
匯出了 "ZHEJIANG"."ORD_PURCHASE_ITEM"              1.281 GB 3238674

. .
匯出了 "ZHEJIANG"."ORD_ORDER_ITEM"                 1.890 GB 3226647
. .
匯出了 "ZHEJIANG"."ORD_LOG_HIT_COMM"               1.078 GB 1335486
. .
匯出了 "ZHEJIANG"."CON_LIST_ITEM_SEND"             483.8 KB    7746
.
.
.
. .
匯出了 "ZHEJIANG"."UNC_SMS_USER_NEW"                   0 KB       0
. .
匯出了 "ZHEJIANG"."UNC_USER_NON"                       0 KB       0
. .
匯出了 "ZHEJIANG"."USR_USER_PLAT_ROLE"                 0 KB       0
已成功載入/解除安裝了主表 "ZHEJIANG"."SYS_EXPORT_SCHEMA_01"
******************************************************************************
ZHEJIANG.SYS_EXPORT_SCHEMA_01
的轉儲檔案集為
:
  /data1/zhj_4_4_1.dp
  /data1/zhj_4_4_2.dp
  /data1/zhj_4_4_3.dp
  /data1/zhj_4_4_4.dp
作業 "ZHEJIANG"."SYS_EXPORT_SCHEMA_01" 已於 23:49:24 成功完成

用了9分鐘整匯出完成,設定成並行度4仍然可以獲得一定的效能提升,但是並不明顯了,這主要是由於整個效能的瓶頸已經不是單個程式的處理能力,多半效能的瓶頸已經變成了磁碟IO瓶頸,此時單單靠增加並行度已經無法明顯提升效能了。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-208540/,如需轉載,請註明出處,否則將追究法律責任。

相關文章