`
g21121
  • 浏览: 694705 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Druid性能测试

 
阅读更多

        前面已经做了c3p0的性能测试,我们这次来测试一下Druid,看看Druid的性能是否与官方说的那样优秀。

 

        1.改造代码:

 /**
     * Druid实现
     */
    public void getUsrInfoWithDruid(DruidDataSource dds,Integer usrId) {
        String sql="SELECT * FROM USER u WHERE u.USR_ID=" + usrId;
        try {
            // 通过属性文件设置Druid参数
            conn=dds.getConnection();
            Statement st=conn.createStatement();
            ResultSet result=st.executeQuery(sql);
            result.close();
            st.close();
            conn.close();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

 

        与c3p0代码非常类似,这里就不说了。

 

        2.修改main函数调用方式,也是做10次查询,100次查询,1000次查询,每种查询重复100次的实验。

package com.test.jdbc.main;

import java.io.IOException;
import com.alibaba.druid.pool.DruidDataSource;
import com.test.jdbc.dao.TestDAO;
import com.test.jdbc.dao.impl.TestDAOImpl;

public class Main2 {

    static String driver = "com.mysql.jdbc.Driver";

    static String jdbcUrl = "jdbc:mysql://192.168.0.1:3306/test";

    static String user = "dba";

    static String passwd = "dba";

    public static void main(String[] args) throws IOException {
        TestDAO testDAO = new TestDAOImpl();
        DruidDataSource dds = getDruidDataSource();
        // 运行100次
        for (int i = 0; i < 100; i++) {
            queryDruid(testDAO, dds, 1000);
        }
    }

    /**
     * 获取Druid数据源
     * @return
     */
    public static DruidDataSource getDruidDataSource() {
        DruidDataSource dds = new DruidDataSource();
        dds.setUsername(user);
        dds.setUrl(jdbcUrl);
        dds.setPassword(passwd);
        dds.setDriverClassName(driver);
        return dds;
    }

    public static void queryDruid(TestDAO testDAO, DruidDataSource dds,
        int count) {
        Integer usrId = 9900;
        long startMillis = System.currentTimeMillis();
        // 测试c3p0查询
        for (int i = 0; i < count; i++) {
            testDAO.getUsrInfoWithDruid(dds, usrId);
        }
        long endMillis = System.currentTimeMillis();
        System.out.println(endMillis - startMillis);
    }

}

 

 

        将运行结果复制到excel表格中,利用excel的图表功能生成几种测试的耗时波动图表(单位:毫秒):
      
        1.查询10次数据库,重复100次结果:



 
        2.查询100次数据库,重复100次结果:



 
        3.查询1000次数据库,重复100次结果:



 

        平均值:
        10次查询:47.5毫秒
        100次查询:493.5毫秒
        1000次查询: 5162毫秒

        在负载较小的情况下Druid的优势比较明显,在大规模查询情况下也表现出来比较好的性能,至少不比c3p0差。

 

  • 大小: 29.6 KB
  • 大小: 28.8 KB
  • 大小: 28 KB
2
3
分享到:
评论
2 楼 g21121 2013-08-02  
wjw465150 写道
可否测试一下"Apache Tomcat JDBC Connection Pool"的效率?

下周一吧,下班喽~
1 楼 wjw465150 2013-08-02  
可否测试一下"Apache Tomcat JDBC Connection Pool"的效率?

相关推荐

    Druid简单高性能MySQL连接池

    1. **高性能**:Druid通过优化的连接池算法和内置的Connection状态检测机制,保证了在高并发环境下仍能保持良好的性能。例如,其使用了双端队列进行连接的分配与回收,减少了锁的使用,提高了并发效率。 2. **健康...

    数据源性能测试用例,C3P0,Druid,Tomcat

    数据源性能测试用例,C3P0,Druid,Tomcat 解压缩密码,去blog找吧http://blog.csdn.net/xzknet/article/details/49127701

    使用Druid数据连接池连接PostgreSQL简单例子

    Druid是一个功能强大且性能优异的数据源连接池,而PostgreSQL则是一种流行的开源关系型数据库管理系统。本教程将详细介绍如何在Java项目中使用Druid数据连接池连接PostgreSQL数据库,以实现一个简单的测试环境。 ...

    Druid源码(druid-1.2.8.tar.gz)

    Druid是阿里巴巴开源的一个强大、灵活且高性能的Java数据库连接池组件。它提供了监控、SQL解析、执行性能统计等多种功能,广泛应用于各种Java企业级项目中。Druid-1.2.8版本源码的分析可以帮助我们深入理解其内部...

    参照阿里druid整理druid-spring-boot-starter的demo

    5. **测试代码**:创建`druid-test`包,编写测试类`DruidTest`,使用`@Autowired`注入DataSource,并进行数据库操作测试,验证Druid连接池的功能。 【Druid核心特性】 1. **性能优异**:Druid提供了连接池的性能...

    druid-1.2.5.rar

    7. **连接有效性检测**:Druid支持定时检测数据库连接的有效性,避免因长时间无操作导致的连接失效问题。 8. **扩展性**:Druid设计上考虑了扩展性,可以通过插件机制添加自定义的监控、拦截等功能。 在"druid-...

    druid连接池 1.1.10

    Druid针对数据库连接池的性能进行了深度优化,比如快速创建和关闭连接、高效的预读取机制、连接有效性检测等。此外,Druid还支持Statement缓存,减少JDBC对象的创建和销毁开销,进一步提升系统性能。 4. **SQL解析...

    Druid源码(apache-druid-0.22.1-src.tar.gz)

    这个源码包包含了Druid的所有源代码,包括核心组件、扩展模块以及相关的测试用例。通过分析源码,我们可以学习到以下几个关键知识点: 1. **连接池设计**:Druid连接池提供了线程安全的数据库连接管理,它支持连接...

    druid-1.1.9 连接池jar包

    在1.1.9这个正式版本中,Druid已经经过了大规模的压力测试,确保了其稳定性和性能,是许多企业级应用中的首选数据库连接池。 Druid的核心特性包括: 1. **性能监控**: Druid提供了一个强大的监控统计功能,可以...

    druid-1.2.4.rar

    Druid提供了一系列接口和事件监听器,可以自定义拦截器、连接验证器、连接测试器等,以满足特定需求,如添加自定义的日志记录、监控规则等。 6. **Druid的性能优化** 通过合理设置连接池参数,如最小连接数、最大...

    druid-0.2.19 阿里数据源

    作为 Java 开发者,了解并掌握 Druid 数据源对于优化数据库访问性能具有重要意义。 1. **Druid 的优点** - **监控功能**: Druid 内置了丰富的监控统计功能,可以实时查看数据库连接池的状态,如连接数、SQL 执行...

    druid-1.1.20.zip

    1. **连接池性能**:Druid在连接创建、销毁、获取和释放等环节进行了大量优化,减少了锁竞争,提升了并发性能。 2. **内存管理**:Druid对内部数据结构进行了内存优化,如使用`ConcurrentHashMap`替代`Hashtable`,...

    druid-1.0.9.zip

    - **防御机制**: Druid具备防止SQL注入的功能,通过SqlParser解析SQL,可以检测并阻止潜在的危险SQL语句。 - **扩展性**: 支持自定义拦截器(Filter),可以实现连接池的扩展功能,如日志记录、性能监控、SQL审计...

    druid-bean的一个测试包

    本测试包针对`Druid`与`Spring`的集成进行了详尽的配置,旨在展示如何利用`Druid`进行数据源管理以及监控,同时包含了方法名正则匹配的拦截器配置,以实现更精细的事务管理和性能分析。 `Druid`的主要优势在于其...

    druid-1.0.9.rar

    6. **连接有效性检测**:Druid提供了连接有效性检测机制,可以定期检查并验证数据库连接是否有效,防止因网络问题导致的无效连接占用资源。 7. **配置友好**:Druid的配置方式灵活,可以通过XML、Java代码或者...

    druid-1.2.4 jar包更新于2020年12月12日,最新的

    6. **连接池生命周期管理**:Druid提供了完善的连接检查和回收机制,如超时检测、空闲连接检测等,确保连接的健康性。 7. **配置灵活性**:Druid提供了多种配置方式,可以通过XML、Java代码或者Spring的Bean配置,...

    druid-1.1.23.jar.zip

    1. **性能优异**:Druid通过内部优化,如Statement缓存、预编译SQL以及连接池的精细控制,确保了在高并发场景下依然能保持出色的性能。 2. **强大的监控功能**:Druid内置了WebStatFilter和StatViewServlet,可以...

Global site tag (gtag.js) - Google Analytics