在《Oracle 和 MySQL 的 JDBC 到底有多慢》中我们测试过 Oracle的JDBC读出性能,现在再来测试一下写入情况。
1. 数据来源
使用TPCH生成的数据,选用其中的part表来做测试,数据记录为2000万行,9个字段。它生成的原始文本文件名为part.tbl,文件大小为2.4G。
测试时先将文本读入内存形成内存对象,然后再写入,文本读入的时间不计在内。
2. 测试环境
CPU 2个Intel3014 ,主频1.7G,共12核,内存64G。
所有测试均在本机上完成,没有消耗网络传输时间。
3. JDBC写入测试
通过Oracle提供的JDBC接口,用SQL语句执行数据写入。
Java写起来麻烦,用SPL脚本执行测试:
| A | ||
| 1 | =file("/home1/tbl/part.tbl").import(;,"|") | /获得要写入的数据 |
| 2 | =now() | /记录时间 |
| 3 | =connect("oracle") | /连接数据 |
| 4 | =A3.execute(A1,"INSERT INTO PART (P_PARTKEY, P_NAME, P_MFGR, P_BRAND, P_TYPE, P_SIZE, P_CONTAINER, P_RETAILPRICE, P_COMMENT) VALUES (?,?,?,?,?,?,?,?,?)",#1,#2,#3,#4,#5,#6,#7,#8,#9) | /把A1中的记录逐条用SQL写入part表 |
| 5 | =A3.close() | / |

本文通过测试分析了Oracle数据库使用JDBC接口进行数据写入的性能,并对比了文本文件、sqlldr导入以及SPL集文件的效率。结果显示,JDBC写入2000万行数据耗时约1小时,而使用sqlldr导入和SPL集文件分别仅需154秒和76秒。文章建议,大量数据写入时,可以考虑先生成临时文件再用数据库导入工具,以提升速度。
最低0.47元/天 解锁文章
684

被折叠的 条评论
为什么被折叠?



