您好,登錄后才能下訂單哦!
這篇文章主要介紹使用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è)資訊頻道!
免責(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)容。