热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

连接池c3p0,Proxool,Druid,TomcatJdbcPool对比测试

这次所要做的测试是比较几种我们常用的数据库连接池的性能,他们分别是:c3p0,Proxool,Druid,TomcatJdbcPool这四种,测试将采用统一的参数配置力求比较“公平”的体现统

这次所要做的测试是比较几种我们常用的数据库连接池的性能,他们分别是:c3p0 ,Proxool ,Druid ,Tomcat Jdbc Pool这四种,测试将采用统一的参数配置力求比较“公平”的体现统一水平下几种连接池的不同,有网友回复说测试不公平会互相干扰,那我就把代码分开,代码是死的人是活的,做事情不动脑只能吃别人剩下的,世界上没有绝对公平的事情,我在此只提供了一个思路,更多的测试还需要你自己去完成。

 

        1.创建类TestDAO,封装统一的查询方法 :

Java代码  收藏代码
  1. import java.sql.Connection;  
  2. import java.sql.ResultSet;  
  3. import java.sql.SQLException;  
  4. import java.sql.Statement;  
  5.   
  6. public class TestDAO {  
  7.   
  8.     private final static String sql = "SELECT * FROM USER u WHERE u.USR_ID=9999";  
  9.   
  10.     public void query(Connection conn) {  
  11.         try {  
  12.             Statement st = conn.createStatement();  
  13.             ResultSet result = st.executeQuery(sql);  
  14.             result.close();  
  15.             st.close();  
  16.             conn.close();  
  17.         } catch (SQLException e) {  
  18.             e.printStackTrace();  
  19.         }  
  20.     }  
  21. }  

 

 

        2.创建测试类TestMain,其中包含:统一参数配置属性、获取各种连接池数据源方法、各种数据源调用方法等,下面分别是各种数据源的测试Main方法,开始测试之前做100次查询操作以初始化连接池并起到稳定测试结果作用:

 

        (1)c3p0测试代码:

Java代码  收藏代码
  1. import java.beans.PropertyVetoException;  
  2. import java.io.IOException;  
  3. import java.sql.SQLException;  
  4. import com.mchange.v2.c3p0.ComboPooledDataSource;  
  5.   
  6. public class C3p0Test {  
  7.   
  8.     // 数据库驱动名称  
  9.     final static String driver = "com.mysql.jdbc.Driver";  
  10.     // 数据库连接地址  
  11.     final static String jdbcUrl = "jdbc:mysql://192.168.0.1:3306/test";  
  12.     // 数据库用户名  
  13.     final static String user = "dba";  
  14.     // 数据库密码  
  15.     final static String passwd = "dba";  
  16.     // 连接池初始化大小  
  17.     final static int initialSize = 5;  
  18.     // 连接池最小空闲  
  19.     final static int minPoolSize = 10;  
  20.     // 连接池最大连接数量  
  21.     final static int maxPoolSize = 50;  
  22.     // 最小逐出时间,100秒  
  23.     final static int maxIdleTime = 100000;  
  24.     // 连接失败重试次数  
  25.     final static int retryAttempts = 10;  
  26.     // 当连接池连接耗尽时获取连接数  
  27.     final static int acquireIncrement = 5;  
  28.     // c3p0数据源  
  29.     final static ComboPooledDataSource c3p0DataSource = getC3p0DataSource();  
  30.   
  31.     // 查询次数  
  32.     final static int count = 10;  
  33.   
  34.     /** 
  35.      * 测试方式: 每种数据源配置信息尽量相同,以求结果更加准确 
  36.      * 每种数据源做10次、100次、500次、1000次、2000次、4000次、8000次查询操作 每种查询重复100次,查看100次执行时间的波动图 
  37.      * @param args 
  38.      * @throws IOException 
  39.      * @throws SQLException 
  40.      */  
  41.     public static void main(String[] args) throws IOException, SQLException {  
  42.   
  43.         TestDAO testDAO = new TestDAO();  
  44.         System.out.println("查询次数为:" + count);  
  45.         System.out.println();  
  46.         System.out.println("==========================c3p0 测试开始==========================");  
  47.         // 测试c3p0  
  48.         for (int i = 0; i < 100; i++) {  
  49.             queryC3p0(testDAO, c3p0DataSource, count);  
  50.         }  
  51.         System.out.println("==========================c3p0 测试结束==========================");  
  52.     }  
  53.   
  54.     /** 
  55.      * c3p0测试 
  56.      * @param testDAO 
  57.      * @param ds 
  58.      * @param count 
  59.      * @throws SQLException 
  60.      */  
  61.     public static void queryC3p0(TestDAO testDAO, ComboPooledDataSource ds, int count) throws SQLException {  
  62.         // 查询100次以初始化连接池  
  63.         for (int i = 0; i < 100; i++) {  
  64.             testDAO.query(ds.getConnection());  
  65.         }  
  66.         // 开始时间  
  67.         long startMillis = System.currentTimeMillis();  
  68.         // 循环查询  
  69.         for (int i = 0; i < count; i++) {  
  70.             testDAO.query(ds.getConnection());  
  71.         }  
  72.         // 结束时间  
  73.         long endMillis = System.currentTimeMillis();  
  74.         // 输出结束时间  
  75.         System.out.println(endMillis - startMillis);  
  76.     }  
  77.   
  78.     /** 
  79.      * 获取c3p0数据源 
  80.      * @throws PropertyVetoException 
  81.      */  
  82.     public static ComboPooledDataSource getC3p0DataSource() {  
  83.         // 设置参数  
  84.         ComboPooledDataSource cpds = new ComboPooledDataSource();  
  85.         try {  
  86.             cp
推荐阅读
  • 本文讨论了在进行 MySQL 数据迁移过程中遇到的所有 .frm 文件报错的问题,并提供了详细的解决方案和建议。 ... [详细]
  • 本文对SQL Server系统进行了基本概述,并深入解析了其核心功能。SQL Server不仅提供了强大的数据存储和管理能力,还支持复杂的查询操作和事务处理。通过MyEclipse、SQL Server和Tomcat的集成开发环境,可以高效地构建银行转账系统。在实现过程中,需要确保表单参数与后台代码中的属性值一致,同时在Servlet中处理用户登录验证,以确保系统的安全性和可靠性。 ... [详细]
  • 在《天天酷跑》中,腾讯微信宠物的升级技巧和策略对于提升游戏体验至关重要。本文详细解析了如何通过合理分配经验和资源,快速提升宠物等级,以及如何选择合适的宠物搭配,以增强角色的综合能力。此外,还介绍了游戏中的一些隐藏机制和优化建议,帮助玩家更好地利用微信宠物的优势,提高游戏成绩。 ... [详细]
  • 本文介绍了如何在 SQL Server 2005 中创建和使用数据库快照,包括创建数据库、数据表、插入数据、创建快照、查询快照数据以及使用快照进行数据恢复等操作。 ... [详细]
  • web页面报表js下载,web报表软件 ... [详细]
  • 8个IDC大数据基础定义解析丨IDC
    本文针对IDC数据行业相关名词术语进行解析,分为4组相关概念,希望大家读完 ... [详细]
  • ABP框架是ASP.NET Boilerplate的简称,它不仅是一个开源且文档丰富的应用程序框架,还提供了一套基于领域驱动设计(DDD)的最佳实践架构模型。本文将详细介绍ABP框架的特点、项目结构及其在Web API优先架构中的应用。 ... [详细]
  • 本文将详细介绍如何在 MongoDB 中实现不区分大小写的查询,包括使用正则表达式和转换字段值的方法。希望通过本文的介绍,读者能够掌握这些技巧并应用于实际项目中。 ... [详细]
  • 作为一名新手开发者,我正在尝试使用 ASP.NET 和 Vue.js 构建一个单页面应用,涉及多个复杂组件(如按钮、图表等)。希望有经验的开发者能够提供指导。 ... [详细]
  • Redis 是一个高性能的开源键值存储系统,支持多种数据结构。本文将详细介绍 Redis 中的六种底层数据结构及其在对象系统中的应用,包括字符串对象、列表对象、哈希对象、集合对象和有序集合对象。通过12张图解,帮助读者全面理解 Redis 的数据结构和对象系统。 ... [详细]
  • 探索UNIX操作系统的家族树
    通过回顾历史,我们可以更好地理解技术的发展。本文将带你深入了解UNIX操作系统的起源和发展历程,揭示其在现代计算中的重要地位。 ... [详细]
  • 本文介绍了三种解决 Git Push 冲突的方法,包括创建新分支、手动解决冲突和强行推送。这些方法适用于不同的开发场景,如版本迭代、多人协作和个人开发。 ... [详细]
  • 本文介绍了如何通过 AJAX 发送请求到后端控制器,并将返回的 JSON 数据解析后在前端页面上显示。具体步骤包括发送 AJAX 请求、解析 JSON 字符串和遍历数据。 ... [详细]
  • 本文详细介绍了如何在 Oracle 数据库中进行筛选备份和恢复操作,包括权限授予、目录管理、数据导出和导入等步骤。 ... [详细]
  • PHP 使用 Cookie 进行访问授权的方法
    本文介绍了如何使用 PHP 和 Cookie 实现访问授权,包括表单验证、数据库查询和会话管理等关键步骤。 ... [详细]
author-avatar
1157476701qq
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有