发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 大数据 扩展性 并发编程 事件驱动 分布式 SOA

又是关于prepareStatement提高性能的问题,请帮忙看一下!

2004-06-20 15:18
赞助商链接

我写了一段小程序,想测试一下使用prepareStatement到底比Statement快多少:(执行30万次insert)

conn = dataSource.getConnection();
conn.setAutoCommit(false);
pstmt = conn.prepareStatement("insert into test values(?,?)");
for(int i=0;i<300000;i++)
{
pstmt.setObject(1, new Integer(i+1));
pstmt.setObject(2, "xxx"+i);
int rowCount = pstmt.executeUpdate();
if( rowCount !=1 ) throw new Exception("insert error:["+(i+1)+"].");
}
conn.commit();

以上代码,执行了110秒

我的运行环境是:
JDK 1.4.2
MYSQL 4.0
p4 1.7G 256M

之后,我改用Statement,做同样的事情:

conn = dataSource.getConnection();
conn.setAutoCommit(false);
stmt = conn.createStatement();
for(int i=0;i<300000;i++)
{
int rowCount = stmt.executeUpdate("insert into test values("+(i+1)+",'s"+(i+1)+"')");
if( rowCount !=1 ) throw new Exception("insert error:["+(i+1)+"].");
}
conn.commit();

以上代码,执行了125秒

请问,为什么使用Statement仅仅只慢了15秒?????????


谢谢

2004-06-21 11:32

15秒不错了,insert再复杂一些可能效果会明显一些。
把setObject改成setInt和setString试试。
麻烦你再试试addBatch,看看多少秒

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com