溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

使用Exp和Expdp導(dǎo)出數(shù)據(jù)的性能有什么區(qū)別

發(fā)布時(shí)間:2021-11-10 09:58:26 來源:億速云 閱讀:478 作者:小新 欄目:關(guān)系型數(shù)據(jù)庫

這篇文章主要介紹使用Exp和Expdp導(dǎo)出數(shù)據(jù)的性能有什么區(qū)別,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

1.前言

            數(shù)據(jù)備份對信息系統(tǒng)的安全運(yùn)行至關(guān)重要,我們的用戶中,使用RMan或第三方專業(yè)備份軟件的越來越多,但是很多用戶仍然保留了傳統(tǒng)的Exp作為備份策略的一部分,主要是由于這種備份方式簡單易用,而且恢復(fù)到其他機(jī)器上也很方便,所以,雖然有其他的備份方式,但是Exp方式仍然會同時(shí)使用,甚至還有不少的用戶只有這種備份方式(可能因?yàn)樗麄冇X得掌握其他技術(shù)太復(fù)雜)。

            隨著用戶的數(shù)據(jù)量增長,Exp導(dǎo)出方式存在的問題也日漸突出,主要就是耗時(shí)長,有的甚至超過3個(gè)小時(shí),加上常見的后臺自動作業(yè):匯總表的計(jì)算,自動費(fèi)用的計(jì)算,統(tǒng)計(jì)信息的收集等工作,使一個(gè)晚上的時(shí)間安排越來越緊張。       

            有沒有辦法提高Exp執(zhí)行的性能呢?以前我做過一些試驗(yàn),查閱了很多資料,總結(jié)過一些經(jīng)驗(yàn),最近拿到了一個(gè)用戶的近300G數(shù)據(jù),再次進(jìn)行了一系列大數(shù)據(jù)量的導(dǎo)出對比試驗(yàn),發(fā)現(xiàn)幾個(gè)參數(shù)的設(shè)置對Exp導(dǎo)出耗時(shí)的影響較大,經(jīng)過優(yōu)化后,Exp導(dǎo)出的性能得到了較大提升,但是與Expdp相比,仍然是后者要快得多,下面將試驗(yàn)情況和相關(guān)知識做一個(gè)介紹,以便我們在幫助用戶制定備份策略時(shí)參考。

2.試驗(yàn)情況

2.1試驗(yàn)環(huán)境

硬件:

CPU :至強(qiáng)5405,4*2G

內(nèi)存:DDR2,4G

硬盤:IDE 1T

軟件:Windows+Oracle 10.2.0.3

數(shù)據(jù):XX醫(yī)院全庫導(dǎo)入的ZLHIS10.30數(shù)據(jù),原始共300G,經(jīng)過收縮回滾表空間、臨時(shí)表空間,以及一些表空間文件未使用的空間后,總共占用267G,其中包含了大量電子病歷相關(guān)的LOB數(shù)據(jù)。

            其他說明:由于該院使用時(shí)間較長,DB Control Repository包含了大量歷史監(jiān)控?cái)?shù)據(jù),表SYSMAN.MGMT_METRICS_RAW中的1300萬條LOB格式數(shù)據(jù),僅該表的導(dǎo)入耗時(shí)超過24小時(shí),為了便于測試,清空了該表的數(shù)據(jù)。

2.2試驗(yàn)方法

在相同環(huán)境下,試驗(yàn)4種不同的導(dǎo)出數(shù)據(jù)的方式的耗時(shí)

1)      使用Exp常規(guī)路徑導(dǎo)出,不加參數(shù)優(yōu)化

2)      使用Exp直接路徑導(dǎo)出,不加參數(shù)優(yōu)化

3)      使用Exp直接路徑導(dǎo)出,參數(shù)優(yōu)化

4)      使用Expdp導(dǎo)出,參數(shù)優(yōu)化

2.3試驗(yàn)結(jié)果

方式

耗時(shí)

說明

Exp常規(guī)路徑,未優(yōu)化

5小時(shí)15分

不加參數(shù)

Exp直接路徑,未優(yōu)化

2小時(shí)38分

direct=y

Exp直接路徑,優(yōu)化

1小時(shí)40分

direct=y recordlength=65535  buffer=104857600

Expdp,優(yōu)化

59分

parallel=3 dumpfile=

expdp_0225_1.dmp,expdp_0225_2.dmp,

expdp_0225_3.dmp

結(jié)果表明:

            速度最快的是Expdp方式,而Exp方式經(jīng)過參數(shù)優(yōu)化后,相對于不加任何參數(shù)的情況,快了近3倍。

            下面對相關(guān)的原理及參數(shù)進(jìn)行詳細(xì)說明。

3.原理說明

            Exp默認(rèn)是傳統(tǒng)路徑,這種模式下,是用Select來查詢數(shù)據(jù),然后寫入buffer cache,在將這些數(shù)據(jù)寫入evaluate buffer,最后傳到Export客戶端,再寫入dump文件。      

            直接路徑模式下,直接從硬盤讀取數(shù)據(jù),然后寫入PGA,格式就是Export的格式,不需要轉(zhuǎn)換,數(shù)據(jù)再直接傳到Export客戶端,寫入dump文件。這種模式?jīng)]有經(jīng)過evaluation buffer,少了一個(gè)過程,導(dǎo)出速度提高也是很明顯。

            Exp沒有并行參數(shù),要進(jìn)行并行導(dǎo)出,可以寫多條命令同時(shí)導(dǎo)出,這種方式可用于特定的數(shù)據(jù)遷移情況,按表或表空間進(jìn)行快速數(shù)據(jù)遷移。   

            Expdp是Oracle 10G上推出的一種先進(jìn)的數(shù)據(jù)導(dǎo)出方式,比Exp有較大的性能提升,Expdp可以看成是Exp的升級版,相當(dāng)于exp + direct mode + parallel。

Expdp缺省是直接路徑方式,它有4種方式,另外3種分別是:
            外部表模式(相當(dāng)于Exp的常規(guī)路徑導(dǎo)出);

            數(shù)據(jù)文件拷貝模式(表空間傳輸);

            網(wǎng)絡(luò)鏈路導(dǎo)入(通過數(shù)據(jù)鏈路導(dǎo)出導(dǎo)入)

            一般情況可以替代Exp,但是還無法完全替代,主要是它需要在數(shù)據(jù)庫服務(wù)器上執(zhí)行,而Exp可以在任何一臺客戶端上執(zhí)行。另外,據(jù)測試,Expdp在導(dǎo)出大型分區(qū)表(1T以上)的時(shí)候,光是分析的時(shí)間就超過2個(gè)小時(shí),而且存在一些BUG。所以,有些用戶仍然會使用Exp來進(jìn)行數(shù)據(jù)備份。

4. 參數(shù)優(yōu)化

Exp相關(guān)參數(shù)

            通過上面的分析,我們知道采用“直接路徑”可以提高導(dǎo)出速度,這種模式重點(diǎn)說明2個(gè)參數(shù):DIRECT和RECORDLENGTH參數(shù)。

  DIRECT參數(shù)定義了導(dǎo)出是使用直接路徑方式(DIRECT=Y),還是常規(guī)路徑方式(DIRECT=N)。常規(guī)路徑導(dǎo)出使用SELECT語句從表中抽取數(shù)據(jù),評估后再寫入,而直接路徑導(dǎo)出則是將數(shù)據(jù)直接從磁盤讀到PGA再原樣寫入導(dǎo)出文件,從而避免了SQL命令處理層的數(shù)據(jù)轉(zhuǎn)換過程,大大提高了導(dǎo)出效率。

            BUFFER參數(shù)用于設(shè)置了讀取記錄的緩存的大小,以字節(jié)為單位,即在array中最大數(shù)量的記錄,該參數(shù)只對常規(guī)路徑模式導(dǎo)出有效。

            RECORDLENGTH參數(shù)是跟DIRECT=Y配合使用的參數(shù),它定義了Export I/O緩沖的大小,作用類似于常規(guī)路徑導(dǎo)出使用的BUFFER參數(shù)。建議設(shè)置RECORDLENGTH參數(shù)為最大I/O緩沖,即65535(64kb)。

            需要強(qiáng)調(diào)是即使用直接路徑導(dǎo)出模式,其中涉及LOB對象的表只會通過傳統(tǒng)模式導(dǎo)出,所以,DIRECT=Y時(shí),除了設(shè)置RECORDLENGTH參數(shù)之外,也需要設(shè)置BUFFER參數(shù),一般情況可設(shè)置為104857600(100M),這一點(diǎn)是網(wǎng)上很多優(yōu)化文章所忽略的。

            另外,還可以修改Oracle初始化參數(shù)Multiple Block Read來提交讀取數(shù)據(jù)的性能,經(jīng)測試,效果不是很明顯,前面的測試環(huán)境下,可減少10分鐘左右的耗時(shí)。

按照上面的參數(shù)優(yōu)化設(shè)置,下面給出一個(gè)導(dǎo)出腳本示例:

exp userid=sys/his@zyyy full=y direct=y recordlength=65535 buffer=104857600 file=F:\zyyy\exp20120218.dmp log=F:\zyyy\exp20120218.log feedback=10000

Expdp相關(guān)參數(shù)

            這里只說明兩個(gè)參數(shù):Parallel和Dumpfile

            Parallel參數(shù)指明了導(dǎo)出并行度,根據(jù)CPU的個(gè)數(shù)進(jìn)行設(shè)置,缺省是1,如果不設(shè)置,導(dǎo)出性能與Exp的直接路徑導(dǎo)出模式差不了多少,就沒有發(fā)揮出它的優(yōu)勢。

            Dumpfile參數(shù)可配合Parallel參數(shù)指定多個(gè)導(dǎo)出文件,用于減少并發(fā)寫入時(shí)的IO爭用。

            結(jié)合這兩個(gè)參數(shù),下面給出一個(gè)導(dǎo)出腳本示例:

SQL>create directory dump_dir as 'F:\data\zyyy';

Cmd:

expdp sys/his@zyyy full=y directory=dump_dir parallel=3

dumpfile=expdp_0225_1.dmp,expdp_0225_2.dmp,expdp_0225_3.dmp logfile=expdp_0225.log 

5.小結(jié)

            如果你仍然習(xí)慣使用Exp方式,如果要減少耗時(shí),最好采用直接路徑方式,并且設(shè)置RECORDLENGTH和BUFFER兩個(gè)參數(shù)的值,可以大大提高導(dǎo)出性能。   如果你掌握了Expdp方式,使用合適的Parallel參數(shù),實(shí)現(xiàn)快速導(dǎo)出,更重要的是Impdp的性能提升才是數(shù)據(jù)泵模式的真正優(yōu)勢所在,從一些Oracle愛好者的測試結(jié)果來看,確實(shí)差別非常大。    

以上是“使用Exp和Expdp導(dǎo)出數(shù)據(jù)的性能有什么區(qū)別”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI