cx_Oracle中批量处理的性能改进

问题描述 投票:0回答:1

使用cx_Oracle将数据批量加载到oracle时遇到性能问题。似乎附加提示不适用于cx_Oracle或至少我无法使其工作。任何帮助将不胜感激

我试图使用cx_Oracle将200万条记录批量推送到Oracle,但是从oracle到oracle需要1.5分钟,如果我使用append提示它只需要20秒。

insertquery="""insert /*+ append parallel(XYZ,8) */ into XYZ(A,B,C,D,E,F,G,H, I,J,K,L,M,N,O,P,Q,R,S)             VALUES('abc',:B,'N',:D,:E,:F,:G,:H,:I,:J,:K,:L,:M,:N,:O,'MIG','MIG',{current_time},{current_time})""".format(current_time=current_time)


print("XYZ START",datetime.datetime.now())
trg_cur.prepare(insertquery)
trg_cur.executemany(None,entityList)'''

如果我保留附加提示,则所用时间保持不变。除了线程之外还有什么方法可以改善这种性能,我会在多个线程中运行它,因为我的输入数据可以达到几亿行,我必须在多个表中插入这些数据

python-3.x oracle performance-testing bulkinsert cx-oracle
1个回答
0
投票

使用append_Values就像一个魅力,40秒减少到10秒,推动100万条记录

insertquery="""insert /*+ append_values parallel(XYZ,8) */ into XYZ(A,B,C,D,E,F,G,H, I,J,K,L,M,N,O,P,Q,R,S)             VALUES('abc',:B,'N',:D,:E,:F,:G,:H,:I,:J,:K,:L,:M,:N,:O,'MIG','MIG',{current_time},{current_time})""".format(current_time=current_time)

© www.soinside.com 2019 - 2024. All rights reserved.