溫馨提示×

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

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

并行提高oracle數(shù)據(jù)導(dǎo)入速度

發(fā)布時(shí)間:2020-09-27 18:26:33 來源:網(wǎng)絡(luò) 閱讀:1773 作者:datanalysis 欄目:關(guān)系型數(shù)據(jù)庫

近期有一個(gè)行業(yè)項(xiàng)目,需要把較大數(shù)據(jù)從文件中導(dǎo)入到oracle。

我們使用oraclesqlldr導(dǎo)入數(shù)據(jù),當(dāng)數(shù)據(jù)量較大時(shí)導(dǎo)入的時(shí)間過長(zhǎng):導(dǎo)入一張8千萬條記錄的表需要2.5個(gè)小時(shí),太慢了。

后來采用了sqlldr并行導(dǎo)入的方式將時(shí)間縮短到了0.8小時(shí),這里記錄一下使用過程。

思路

    將要導(dǎo)入的數(shù)據(jù)文件拆分成10份,然后使用多任務(wù)并行執(zhí)行對(duì)應(yīng)數(shù)據(jù)份數(shù)的sqlldr命令(當(dāng)然也就需要同樣數(shù)量的control文件),多個(gè)客戶端同時(shí)往數(shù)據(jù)庫中導(dǎo)入數(shù)據(jù)。

這里有兩點(diǎn)比較重要,1、如何自動(dòng)生成若干條sqlldr命令和若干個(gè)control文件(一個(gè)個(gè)寫有點(diǎn)累);2、如何同時(shí)并行執(zhí)行(一個(gè)個(gè)去執(zhí)行就更累了)。

這里借助了集算器這個(gè)工具完成自動(dòng)生成命令和控制文件,再并行執(zhí)行。

實(shí)現(xiàn)步驟

主程序

    負(fù)責(zé)任務(wù)控制,任務(wù)分配、調(diào)用子程序。

并行提高oracle數(shù)據(jù)導(dǎo)入速度



子程序

     生成具體control文件和sqlldr命令,并執(zhí)行導(dǎo)入命令完成數(shù)據(jù)加載

并行提高oracle數(shù)據(jù)導(dǎo)入速度

【注】這里使用了集算器的并行機(jī)制來同時(shí)執(zhí)行多個(gè)sqlldr命令;使用system函數(shù)調(diào)用系統(tǒng)命令。

實(shí)際效果

    由于是程序控制的并行任務(wù),所以可以根據(jù)實(shí)際需要設(shè)置并行任務(wù)數(shù),將機(jī)器性能發(fā)揮到最優(yōu)。

下圖記錄了不同并行數(shù)情況下sqlldr導(dǎo)入速度,總體是呈線性增長(zhǎng)的,并發(fā)任務(wù)越多,導(dǎo)入速度越快。

并行提高oracle數(shù)據(jù)導(dǎo)入速度

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

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

AI