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

感性对比有无使用数据库连接池的性能

    博客分类:
  • J2EE
阅读更多
心血来潮,想看看数据库连接池的作用有多大。
于是就尝试着看看,给自己一个感性的认识。
相关参数如下:
win server 2003
tomcat 6.0.10
Mysql 5.0
Myeclipse 6.0

无连接池的插入方法:
public void addUser(String name,String password) {
		
		
		 String sql="insert into userinfo(usname,uspassword) values(?,?)"; 
		
			try {
				conn=DriverManager.getConnection(connstr);
				try {
					   ps=conn.prepareStatement(sql);
				
					   ps.setString(1,name);
					   ps.setString(2, password);
					  					
					   try {
							 ps.execute();
							 
							  
						} catch (SQLException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}finally{
							if(rs!=null)rs.close();
						}
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}finally{
					if(ps!=null)ps.close();
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally{
				if(conn!=null)
					try {
						conn.close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
			}
		
	}


有连接池时:
InitialContext ctx=new InitialContext();    
	     	    ds=(DataSource)ctx.lookup("java:comp/env/jdbc/mysql");    
	            conn = ds.getConnection();  


servlet代码:
public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out
				.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("    This is ");
		out.print(this.getClass());
		out.println(", using the GET method");
		out.println("test 1000 add");
		        
         DBManager db=new DBManager();
         db.getConnection();
         long lIteratorStartTime = new Date().getTime();
   	     System.out.println("开始: " + lIteratorStartTime);
         for(int i=0;i<1000;i++){
        	 db.addUser("persia"+i, "persia"+i);
         }
         long lIteratorEndTime = new Date().getTime();
   	  System.out.println("结束: " + lIteratorEndTime);
    
   	  long lIteratorDifference = lIteratorEndTime - lIteratorStartTime;
   	  System.out.println("无数据库连接池的耗时: " + lIteratorDifference);
   	  
   	 DBManagerByPool dbp=new DBManagerByPool();
     
     long startTime = new Date().getTime();
	     System.out.println("开始: " + startTime);
     for(int i=1000;i<2000;i++){
    	 try {
			dbp.addUser("persia"+i, "persia"+i);
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
     }
     long endTime = new Date().getTime();
	  System.out.println("结束: " + endTime);

	  long difference = endTime - startTime;
	  System.out.println("使用数据库连接池的耗时: " + difference);
	  
	  
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}


刚开始的配置是:
插入1000条,连接池配置:
 <Resource name="jdbc/mysql" 
	   auth="Container" 
	   type="javax.sql.DataSource" 
     maxActive="100" 
	 maxIdle="30" 
	 maxWait="10000" 
	 username="root" 
	 password="root" 
	 driverClassName="com.mysql.jdbc.Driver" 
     url="jdbc:mysql://localhost:3306/mylogin"/>


结果:
开始: 1242302560140
结束: 1242302596296
无数据库连接池的耗时: 36156
开始: 1242302596296
结束: 1242302622828
使用数据库连接池的耗时: 26532


如果数据库连接配置没变,改为插入10000条,则:
开始: 1242302704390
结束: 1242303057265
无数据库连接池的耗时: 352875
开始: 1242303057265
结束: 1242303365687
使用数据库连接池的耗时: 308422


如果修改maxActive为1000
开始: 1242305368468
结束: 1242305674984
使用数据库连接池的耗时: 306516


如何配置才能最优呢?
0
0
分享到:
评论

相关推荐

    电信设备-容性、感性表面耦合机制小型化高性能高频段通信天线罩.zip

    本文将深入探讨“电信设备-容性、感性表面耦合机制小型化高性能高频段通信天线罩”的核心概念,旨在揭示其在高频通信领域的应用和优势。 一、容性和感性表面耦合机制 容性和感性表面耦合机制是天线设计中的关键...

    数据库的课程设计 基本概念、基本原理、数据库设计

    从而使对数据库开发的感性认识和具体实践相结合,帮助学生初步掌握管理数据库的基本开发技术与方法,为进一步学习管理信息系统开发等知识打下良好的基础。从而具有一定的管理数据库的开发能力。

    剖析数据库教案.docx

    学生分析: 学生通过认识信息资源管理和使用数据库两个章节,基本上体会了数据库软件的一些特点和功能,但是数据库表的结构关系等相对来说比较抽象,需要帮助学生建立感性到理性的认知。 教学目标: 1、知识与能力...

    dbSNP数据库dbSNP数据库.ppt

    dbSNP数据库是一个全球性的公共资源库,专门用于存储和管理生物体内的单核苷酸多态性(Single Nucleotide Polymorphism, SNP)信息。SNP是指在DNA序列中,一个位置上出现两种或多种不同的核苷酸,是人类遗传变异中最...

    感性负载是什么意思?感性负载和容性负载的区别

    感性负载和容性负载是电路学中两种基本的负载类型,它们的主要区别在于电流和电压之间的相位关系以及能量的储存方式。 首先,感性负载是指电流滞后于电压的负载,它主要是由电感元件构成的,例如电动机、变压器等。...

    感性负载与容性负载的Multisim瞬态分析

    在Multisim中,我们可以模拟感性负载,并通过瞬态分析观察电流和电压随时间的变化情况,这对于理解和优化电路性能至关重要。 容性负载则是指具有电容特性的负载,如电容器。电容在电路中储存电荷,当电压变化时,...

    高校数据库课程教学改革的建议——以MYSQL为例.pdf

    - 在讲解关系型数据库和范式理论时,结合具体案例(如进销存系统),通过实际场景让学生理解外键和表间关系,从感性认识提升到理性理解。 5. 案例驱动教学法与综合项目练习 设计源自真实世界的案例,让学生在实践...

    数据库应用实验报告分享.pdf

    1. **直观理解数据库管理系统**: 实验帮助学生通过实践理解数据库管理系统的功能和作用,增强对数据库理论的感性认识。 2. **掌握Access 2003的基本操作**: 学习如何创建和打开Access 2003数据库,以及如何进行数据...

    数据库实验一04113.docx

    本次实验旨在通过实践加深学生对于数据库系统理论知识的理解,增强他们对于大型数据库系统的感性认识和操作能力。实验的重点在于让学生掌握数据库设计和上机实践两个方面的内容。 #### 2. 具体目标 - **理论理解**...

    MOSFET驱动感性负载实验笔记.docx

    本实验笔记主要探讨了MOSFET驱动感性负载的问题,感性负载如继电器、电机或紫外线灯整流器等,在开关过程中会产生反电动势,可能导致MOSFET的损坏。以下是对实验内容的详细分析: 首先,高端驱动(P-FET方式)测试...

    带货直播风格理性与感性的博弈.pdf

    主播可能会详细介绍产品的技术参数、使用方法,甚至进行对比分析,让消费者了解产品的实际价值。这种风格适合那些需要深度了解产品特性的消费者,他们更倾向于依赖事实和逻辑进行购买决策。 在实际操作中,许多直播...

    浅析电力系统感性无功补偿 浅析电力系统感性无功补偿

    浅析电力系统感性无功补偿 浅析电力系统感性无功补偿

    《SQL SERVER 2005 数据库设计》课程教学体会.pdf

    例如,可以选择学生比较熟悉的学生成绩管理内容来设置情境,教授学生通过分析现行学校学生成绩管理中的问题,然后使用数据库管理系统来解决实际工作中成绩管理人员遇到的困难。这个过程中,教师需要逐步将教学内容...

    基于内容的交互式感性图像检索

    基于内容的图像检索(Content-Based Image Retrieval, CBIR)技术成为了当今研究领域的热点之一,并在多媒体数据库、电子图书馆、商标管理、医疗图像管理、公安系统、卫星图像管理等多个领域得到了广泛的应用。...

    [详细完整版]数据库实验一.doc

    1. 通过实际操作,加强学生对数据库系统理论知识的掌握,增进对大型数据库的感性认识和操作技巧。 2. 通过使用具体的数据库管理系统,如SQL Server 2005,让学生了解并掌握实际的数据库管理技术。 3. 学习和运用SQL...

    感性负载对机载电子设备的干扰及抑制措施研究.pdf

    随着现代军事技术的发展,新型电子设备被广泛应用到战斗机上,这些设备的使用极大地提升了飞机的作战效能。然而,在实际应用过程中,新型电子设备在军用飞机上的故障率一直较高,例如新型火控雷达的有效作战距离受限...

Global site tag (gtag.js) - Google Analytics