`
wuzhe200
  • 浏览: 3662 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

jdbc运行的时间到底怎么会事 它的性能又如何提高

阅读更多
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的性能关键在那里?如何才能提高?
以上是我的一些疑问 望了解的人告之


分享到:
评论

相关推荐

    Mybatis与JDBC批量插入MySQL数据库性能测试

    在数据库操作中,批量插入(Batch Insert)是一种提高性能的有效方式,尤其是在处理大量数据时。本文将探讨Mybatis和JDBC在批量插入MySQL数据库时的性能差异,并提供相关的测试资源。 首先,JDBC(Java Database ...

    JDBC性能优化.pdf

    - **背景**:由于元数据方法通常比其他JDBC方法更耗时,频繁调用会导致系统性能下降。 - **建议**:应用程序应当缓存从`ResultSet`返回的元数据信息,避免重复获取相同的元数据。 - **示例**:当调用`ResultSet`...

    优化JDBC性能的三大技巧.doc

    标题中的“优化JDBC性能的三大技巧”是指在开发基于Java的JDBC应用程序时,为了提升性能而采取的关键策略。这些技巧主要集中在正确...遵循上述原则,可以显著提高JDBC应用程序的运行效率,降低系统负载,提升用户体验。

    sqljdbc4.jar, sqljdbc41.jar, sqljdbc42.jar三个包

    在实际开发中,通常会使用连接池来管理数据库连接,如C3P0、Apache DBCP或HikariCP,以提高性能和效率。 总的来说,sqljdbc4.jar, sqljdbc41.jar, 和sqljdbc42.jar是Microsoft SQL Server与Java应用程序交互的重要...

    sql server2000 jdbc

    在实际应用中,为了提高性能和资源利用率,通常会使用连接池,如C3P0、Apache DBCP或HikariCP。连接池预先创建并维护一定数量的数据库连接,应用程序需要时可以从池中获取,用完后归还。 7. **异常处理**: 使用...

    优化JDBC方法功略

    2. 选用最佳性能的功能:了解并利用JDBC驱动提供的特性,比如批处理(Batch Updates),它可以显著提高插入、更新和删除操作的速度。 3. 管理连接和更新:有效地管理数据库连接,使用连接池可以减少连接创建和销毁...

    sqljdbc+mysqljdbc

    在实际开发中,我们还会使用诸如DataSource这样的高级接口,以及连接池技术来提高性能和管理数据库连接。例如,Apache的Commons DBCP或C3P0库可以提供连接池服务,它们能够复用数据库连接,从而减少创建和销毁连接的...

    JDBC和ODBC的区别

    - **JDBC**:具有更好的移植性,一旦选择了正确的JDBC驱动,就可以在不同的平台上运行,而无需额外的配置。 - **ODBC**:可能需要针对不同的数据库服务器进行特定的配置,移植性相对较差。 ### 应用场景的选择 ...

    Access_JDBC30.jar

    总的来说,"Access_JDBC30.jar"是针对Access数据库JDBC驱动的一个重要升级,它通过解除查询次数和行数限制,修复执行异常,提升了开发者的使用体验和应用性能。对于那些需要频繁与Access数据库交互的Java项目,这是...

    Oracle JDBC连接缓存对JSP数据库处理性能的优化.pdf

    Oracle JDBC连接缓存是提高JSP应用数据库性能的关键技术,通过有效的连接管理和资源复用,它能够显著提升电子商业系统的响应速度和整体性能。正确配置和使用连接缓存,结合其他数据库优化策略,可以为大型、高并发...

    sqlserver驱动包 jdbc驱动 sqljdbc.jar和sqljdbc4.jar

    首先,sqljdbc.jar和sqljdbc4.jar都是由微软官方提供的JDBC驱动程序,适用于不同版本的Java运行环境。sqljdbc.jar是适用于Java SE 6及以下版本的驱动,而sqljdbc4.jar则是为Java SE 7及以上版本设计的,它支持更多的...

    sqljdbc41的jar包

    描述中提到“java中使用的链接数据库的jar包”,这指的是Java Archive (JAR) 文件,它包含了运行Java程序所需的类和其他资源。在本例中,`sqljdbc41.jar`是用于连接SQL Server的JDBC驱动程序,开发者将其添加到Java...

    jdbc的优缺点 喜欢java的欢迎下载

    1. **性能问题**:尽管JDBC提供了许多便利,但在某些情况下,它的使用可能会导致性能下降。特别是当涉及到大量数据处理或频繁的数据库交互时,JDBC可能无法达到最优性能。这是因为JDBC的实现通常涉及网络通信和序列...

    jdbc驱动jar包.zip

    在实际开发中,我们常常会将JDBC驱动的JAR文件添加到项目的类路径(classpath)中,以便运行时能正确地加载和使用驱动。例如,对于Maven项目,可以在pom.xml文件中添加对应的依赖;对于非Maven项目,可以将JAR文件放...

    关于JDBC

    * 提高可移植性:JDBC 允许开发人员编写可以在不同的数据库产品上运行的程序。 * 提高安全性:JDBC 提供了一些安全机制,例如身份验证和加密,来保护数据的安全。 JDBC 的缺点包括: * 性能问题:JDBC 的性能可能...

    jdbc开发教程pdf

    为了提高性能,教程还将介绍JDBC的批处理和连接池。批处理允许一次性发送多个SQL命令,减少网络通信开销。而连接池则管理数据库连接,避免频繁创建和销毁连接,从而优化资源利用。 在高级主题中,读者将学习到...

    管理系统-JDBC

    在实际应用中,考虑到性能和安全性,"管理系统-JDBC"可能会使用PreparedStatement来防止SQL注入攻击,并通过批处理操作提高数据处理效率。此外,为了优化用户体验,可能会实现分页查询、缓存机制,以及事务处理来...

    sqlserver2000-jdbc2.0驱动

    对于`sqljdbc4.jar`,它可能需要在Java 6或更高版本的环境中运行,否则可能会出现不兼容的问题。 总的来说,`sqljdbc4.jar`和`sqljdbc.jar`是连接Java应用与SQL Server 2000的关键组件,它们允许开发者利用JDBC接口...

    ha-jdbc.rar

    1. **故障切换**:当主数据库出现故障时,ha-jdbc能够自动检测并切换到备用数据库,确保应用的连续运行,减少服务中断时间。 2. **负载均衡**:ha-jdbc能够根据预设策略将数据库请求分发到多个数据库实例上,从而...

    mssql2000-jdbc

    `PreparedStatement`适用于预编译的SQL,能提高性能并防止SQL注入攻击。 4. **执行SQL操作**:调用`Statement`或`PreparedStatement`的`executeQuery()`或`executeUpdate()`方法执行SQL查询或修改操作。 5. **处理...

Global site tag (gtag.js) - Google Analytics