public ArrayList getUserInfo()
{
long methodstart = System.currentTimeMillis();
ArrayList<User> list = new ArrayList<User>();
Connection conn = null;
ResultSet rs = null;
Statement stmt = null;
User user= null;
String sql = "select * from t_user";
try {
long constart = System.currentTimeMillis();
conn = GetDbConnection.GetConnetion();
long conend = System.currentTimeMillis();
System.out.println("Connection time "+(conend-constart)+" ms");
stmt = conn.createStatement();
if (conn != null) {
rs = stmt.executeQuery(sql);
}
long resultstart = System.currentTimeMillis();
while (rs.next()) {
user= new User();
user.setUsername(rs.getString(1));
user.setPassword(rs.getString(2));
list.add(user);
}
stmt.close();
long resultend = System.currentTimeMillis();
System.out.println("getUserInfo ResultSet time "+(resultend-resultstart)+" ms");
}catch (Exception ex) {
System.out.println(ex.toString());
} finally {
try {
if (rs != null) {
rs.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
}
}
long methodend = System.currentTimeMillis();
System.out.println("getUserInfo Time "+(methodend-methodstart)+" ms");
return list;
}
以上是我简单的一个测试
主要测试
1.数据库连接时间
2.数据库执行时间
3.整个方法的时间(这种测试方法 我不能确定是否正确)
测试结果(10次左右) (数据库是局域网)
Connection time 360 ms (数据连接是用jdbc连接 用jndi测试过数据居然只要0ms,完全不明白为何差距如此大)
getUserInfo ResultSet time 16 ms
getUserInfo Time 4485 ms
一共返回39条记录
我这样测试了很多次 总觉的时间不合理
我认为 连接时间+执行时间 <= 整个方法的时间 (关闭连接的时间没有测试)
但 360+16 <4485 差距也太大了点 相减的4000ms到底在干什么?(主要不块不是很了解,希望有人帮我解答~!!!)
而且 一个数据操做 往往要调用另一个 数据操作 这将进行两次数据库连接 整个方法的时间更是大大的增长
如果都写个一个数据操作的话代码也太庞大了 (这块又如何解决???)
我这样的测试是不是合理(我也怀疑),如果不合理 告之我合理的方法
jdbc的性能关键在那里?如何才能提高?
以上是我的一些疑问 望了解的人告之
分享到:
- 2008-04-24 09:29
- 浏览 626
- 评论(0)
- 论坛回复 / 浏览 (0 / 1605)
- 查看更多
相关推荐
在数据库操作中,批量插入(Batch Insert)是一种提高性能的有效方式,尤其是在处理大量数据时。本文将探讨Mybatis和JDBC在批量插入MySQL数据库时的性能差异,并提供相关的测试资源。 首先,JDBC(Java Database ...
- **背景**:由于元数据方法通常比其他JDBC方法更耗时,频繁调用会导致系统性能下降。 - **建议**:应用程序应当缓存从`ResultSet`返回的元数据信息,避免重复获取相同的元数据。 - **示例**:当调用`ResultSet`...
标题中的“优化JDBC性能的三大技巧”是指在开发基于Java的JDBC应用程序时,为了提升性能而采取的关键策略。这些技巧主要集中在正确...遵循上述原则,可以显著提高JDBC应用程序的运行效率,降低系统负载,提升用户体验。
在实际开发中,通常会使用连接池来管理数据库连接,如C3P0、Apache DBCP或HikariCP,以提高性能和效率。 总的来说,sqljdbc4.jar, sqljdbc41.jar, 和sqljdbc42.jar是Microsoft SQL Server与Java应用程序交互的重要...
在实际应用中,为了提高性能和资源利用率,通常会使用连接池,如C3P0、Apache DBCP或HikariCP。连接池预先创建并维护一定数量的数据库连接,应用程序需要时可以从池中获取,用完后归还。 7. **异常处理**: 使用...
2. 选用最佳性能的功能:了解并利用JDBC驱动提供的特性,比如批处理(Batch Updates),它可以显著提高插入、更新和删除操作的速度。 3. 管理连接和更新:有效地管理数据库连接,使用连接池可以减少连接创建和销毁...
在实际开发中,我们还会使用诸如DataSource这样的高级接口,以及连接池技术来提高性能和管理数据库连接。例如,Apache的Commons DBCP或C3P0库可以提供连接池服务,它们能够复用数据库连接,从而减少创建和销毁连接的...
- **JDBC**:具有更好的移植性,一旦选择了正确的JDBC驱动,就可以在不同的平台上运行,而无需额外的配置。 - **ODBC**:可能需要针对不同的数据库服务器进行特定的配置,移植性相对较差。 ### 应用场景的选择 ...
总的来说,"Access_JDBC30.jar"是针对Access数据库JDBC驱动的一个重要升级,它通过解除查询次数和行数限制,修复执行异常,提升了开发者的使用体验和应用性能。对于那些需要频繁与Access数据库交互的Java项目,这是...
Oracle JDBC连接缓存是提高JSP应用数据库性能的关键技术,通过有效的连接管理和资源复用,它能够显著提升电子商业系统的响应速度和整体性能。正确配置和使用连接缓存,结合其他数据库优化策略,可以为大型、高并发...
首先,sqljdbc.jar和sqljdbc4.jar都是由微软官方提供的JDBC驱动程序,适用于不同版本的Java运行环境。sqljdbc.jar是适用于Java SE 6及以下版本的驱动,而sqljdbc4.jar则是为Java SE 7及以上版本设计的,它支持更多的...
描述中提到“java中使用的链接数据库的jar包”,这指的是Java Archive (JAR) 文件,它包含了运行Java程序所需的类和其他资源。在本例中,`sqljdbc41.jar`是用于连接SQL Server的JDBC驱动程序,开发者将其添加到Java...
1. **性能问题**:尽管JDBC提供了许多便利,但在某些情况下,它的使用可能会导致性能下降。特别是当涉及到大量数据处理或频繁的数据库交互时,JDBC可能无法达到最优性能。这是因为JDBC的实现通常涉及网络通信和序列...
在实际开发中,我们常常会将JDBC驱动的JAR文件添加到项目的类路径(classpath)中,以便运行时能正确地加载和使用驱动。例如,对于Maven项目,可以在pom.xml文件中添加对应的依赖;对于非Maven项目,可以将JAR文件放...
* 提高可移植性:JDBC 允许开发人员编写可以在不同的数据库产品上运行的程序。 * 提高安全性:JDBC 提供了一些安全机制,例如身份验证和加密,来保护数据的安全。 JDBC 的缺点包括: * 性能问题:JDBC 的性能可能...
为了提高性能,教程还将介绍JDBC的批处理和连接池。批处理允许一次性发送多个SQL命令,减少网络通信开销。而连接池则管理数据库连接,避免频繁创建和销毁连接,从而优化资源利用。 在高级主题中,读者将学习到...
在实际应用中,考虑到性能和安全性,"管理系统-JDBC"可能会使用PreparedStatement来防止SQL注入攻击,并通过批处理操作提高数据处理效率。此外,为了优化用户体验,可能会实现分页查询、缓存机制,以及事务处理来...
对于`sqljdbc4.jar`,它可能需要在Java 6或更高版本的环境中运行,否则可能会出现不兼容的问题。 总的来说,`sqljdbc4.jar`和`sqljdbc.jar`是连接Java应用与SQL Server 2000的关键组件,它们允许开发者利用JDBC接口...
1. **故障切换**:当主数据库出现故障时,ha-jdbc能够自动检测并切换到备用数据库,确保应用的连续运行,减少服务中断时间。 2. **负载均衡**:ha-jdbc能够根据预设策略将数据库请求分发到多个数据库实例上,从而...
`PreparedStatement`适用于预编译的SQL,能提高性能并防止SQL注入攻击。 4. **执行SQL操作**:调用`Statement`或`PreparedStatement`的`executeQuery()`或`executeUpdate()`方法执行SQL查询或修改操作。 5. **处理...