今天测试了下expdp在导出时是否加并行,以及如何加并行才能使导出效率最高,得出如下结论:
expdp 导出时加并行度参数设置:
parallel 并行度
filesize 单个文件大小的上限
totalsize 导出文件的总大小
满足下面的公式,可以保证导出效率最高:
(parallel-1) * filesize >= totalsize
下面是今天做测试时的数据:
这里有一张表44.93G,数据库服务器是24个CPU,SSD磁盘正常导出,导出文件大小为38.64G,导出时间2分2秒
expdp CPIC_PERF/CPIC_PERF directory=IMP_DIR tables= T_CLAIM_PART_TRA_B content=DATA_ONLY dumpfile=T_CLAIM_PART_TRA_B_20190227_PARALLEL.dump
然后我们对该导出操作加上不同的并行度进行测试:
第一次测试:执行1分11秒,导出了14个文件,从大小上可以明显看出,数据主要保存在前7个文件,后7个文件的数据量要小一些,原因是(8-1)*5=35G,没有达到导出总文件的大小,所以还需要增加数据文件来保存剩下的的数据,所以又增加了7个文件
expdp CPIC_PERF/CPIC_PERF directory=IMP_DIR tables= T_CLAIM_PART_TRA_B content=DATA_ONLY dumpfile=T_CLAIM_PART_TRA_B_20190227_PARALLEL%U.dump filesize= 5 G parallel=8 ;
第二次测试:执行1分10秒,导出了7个文件,实际上7个文件已经满足了总文件的大小,所以没有再增加新的数据文件,虽然比上一次测试在总时间上只减小了1秒,但是数据文件数要比之前少,这种情况要更优一些;
expdp CPIC_PERF/CPIC_PERF directory=IMP_DIR tables= T_CLAIM_PART_TRA_B content=DATA_ONLY dumpfile=T_CLAIM_PART_TRA_B_20190227_PARALLEL%U.dump filesize= 6 G parallel=8 ;
第三次测试:鉴于在网上查到的一些说法,我们做了一次测试来验证下:
网上的说法是 parallel<= 导出数据量/fileszie
按照网上的说法,我们做了新的设置
expdp CPIC_PERF/CPIC_PERF directory=IMP_DIR tables= T_CLAIM_PART_TRA_B content=DATA_ONLY dumpfile=T_CLAIM_PART_TRA_B_20190227_PARALLEL%U.dump filesize=6G parallel=4 ;
执行的时间是1分48秒,导出9个数据文件,可以发现,这种情况并非最优方案,所以网上的说法其实还需要进一步验证。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69908786/viewspace-2637066/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/69908786/viewspace-2637066/