首页 > 数据库 > Oracle > 从Oracle卸载数据到文本文件的性能问题
某电信运营商营销系统每月上旬需卸载大量数据到文本文件,下发给相关单位。在奥运重保期间观察到运行该任务的主机CPU的IDLE接近于0,进行了分析,提出建议。
[@more@]检查发现占用CPU的进程全部是sqlplus进程,而不是数据库性能问题时常见的server process,进一步了解,发现该业务处理是一系列脚本,调用sqlplus,通过SQL*Net连接到另一主机上的数据库,并把结果用spool输出到文本文件。
用sqlplus产生文本文件固然是一个简单易行的方法,但是性能一般,对于如此多的SQL以及如此大量数据的输出,显然不是一个适当的办法。从用户处了解到,完成此项工作需要6-8个小时。
分别采用Java和Pro*C编程进行了同样功能的测试,卸载30万行数据,每行约40字节,速度对比如下:
SQL*Plus:110秒
Java:10秒
Pro*C:<2秒
Pro*C程序参见:
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:459020243348
已根据此测试结果,向用户提出建议。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/14993/viewspace-1010384/ ,如需转载,请注明出处,否则将追究法律责任。