小議IMP操作引數COMMIT=Y(二)
前一段時間在論壇上看到imp的COMMIT引數問題,於是打算簡單總結一下。
這篇文章進一步討論COMMIT=Y對效能的影響。
小議IMP操作引數COMMIT=Y(一):http://yangtingkun.itpub.net/post/468/254854
上一篇文章討論了COMMIT=Y對效能的影響。有人也許會說,COMMIT=Y不會針對每條記錄去COMMIT的,而是針對BUFFER中容納的所有資料。可以透過加大BUFFER的方式來避免COMMIT=Y帶來的效能影響。
這個觀點有一定的道理,這也說明了前一篇文章例子中,為什麼COMMIT對IMP效率的影響沒有對PL/SQL例子的影響那麼明顯。
但是這個觀點有一個前提。那就是表中不能包含LONG、LOB、REF、ROWID和UROWID列。如果包含了這些列,那麼陣列繫結插入將失效,每條記錄的插入之後都會執行COMMIT操作。
所以,設定了COMMIT=Y後,包含這些列的表的匯入效能會嚴重下降。
SQL> CREATE TABLE T (ID NUMBER, COMMENTS CLOB);
表已建立。
SQL> BEGIN
2 FOR I IN 1..100000 LOOP
3 INSERT INTO T VALUES (I, TO_CHAR(I));
4 END LOOP;
5 COMMIT;
6 END;
7 /
PL/SQL 過程已成功完成。
SQL> host exp test/test file=test.dmp tables=t
Export: Release 9.2.0.4.0 - Production on 星期四 1月 25 20:32:25 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to: Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
Export done in ZHS16GBK character set and AL16UTF16 NCHAR character set
About to export specified tables via Conventional Path ...
. . exporting table T 100000 rows exported
Export terminated successfully without warnings.
SQL> set time on
20:32:47 SQL> drop table t;
Table dropped.
20:32:51 SQL> host imp test/test file=test.dmp tables=t buffer=20480000
Import: Release 9.2.0.4.0 - Production on 星期四 1月 25 20:32:53 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to: Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
Export file created by EXPORT:V09.02.00 via conventional path
import done in ZHS16GBK character set and AL16UTF16 NCHAR character set
. importing TEST's objects into TEST
. . importing table "T" 100000 rows imported
Import terminated successfully without warnings.
20:33:34 SQL> drop table t;
Table dropped.
20:33:40 SQL> host imp test/test file=test.dmp tables=t buffer=20480000 commit=y
Import: Release 9.2.0.4.0 - Production on 星期四 1月 25 20:33:41 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to: Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
Export file created by EXPORT:V09.02.00 via conventional path
import done in ZHS16GBK character set and AL16UTF16 NCHAR character set
. importing TEST's objects into TEST
. . importing table "T" 100000 rows imported
Import terminated successfully without warnings.
20:35:34 SQL>
不使用COMMIT=Y需要43秒,而採用了COMMIT=Y則需要54秒。因此,對於包含這些列的表來說,COMMIT=Y的影響更大一些。
最後簡單說一句,Oracle的文件中除了上面的這些列,還提到了DATE列,但是根據我的測試發現,DATE列似乎採用的就是陣列插入的方式,懷疑文件這裡有誤。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-69149/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 小議IMP操作引數COMMIT=Y(三)MIT
- 小議IMP操作引數COMMIT=Y(一)MIT
- (轉載)小議IMP操作引數COMMIT=YMIT
- 理解exp, imp 使用direct=y 及imp commit=yMIT
- imp commit,buffer 引數MIT
- IMP中commit=y的用法~~~MIT
- imp commit引數的使用MIT
- commit_write引數MIT
- imp的buffer和commit分析MIT
- 轉:oracle EXP /IMP引數詳解Oracle
- IMP EXP常用引數,實用例子
- imp使用注意點(commit選項)MIT
- importvg 一定要帶引數 -y vgname hdiksnameImport
- imp中的indexfile引數解決imp指定表空間問題Index
- 【IMPDP】【IMP】SQL指令碼盡收眼底——SHOW引數與SQLFILE引數對比SQL指令碼
- ROUND(x,y)與TRUNC(x,y)函式中y引數值為省略、空值與null的區別函式Null
- mysql效能引數innodb_flush_log_at_trx_commitMySqlMIT
- EXP匯出引數compress=y(n)的區別
- 小知識二、Then協議協議
- commit_write,commit_logging,commit_wait引數和oracle redo行為MITAIOracle Redo
- 【IMP】使用IMP的SHOW引數輕鬆獲取EXP命令的DUMP檔案內容
- innodb_flush_log_at_trx_commit引數的直白理解MIT
- 轉摘:ORACLE:IMP工具ignore=y的一個問題Oracle
- 常用操作 / 獲取引數
- DBMS_SESSION包小議(二)Session
- [20171105]exp imp buffer引數解析.txt
- mysql的innodb_flush_log_at_trx_commit引數實驗MySqlMIT
- 小程式內引數和掃碼引數統一
- EXP/IMP 學習(二)
- oracle 10g impdp與imp 引數選項不同地方Oracle 10g
- 引數匹配模型——Python學習之引數(二)模型Python
- 常用URL引數操作方法
- 小議Linux安全防護(二)Linux
- oracle exp_imp小記Oracle
- pandas引數設定小技巧
- imp匯入時default 按table提交,使用commit按buffer提交MIT
- exp和imp的詳細操作
- [AlwaysOn] T-SQL語法:REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT引數SQLUIsynchronizedMIT