使用连结池的意义

我从来都这样说:不是所有的应用都要采用连结池,一般的轻载用了连结池反而会降低效率,要用什么方式连结,完全看你的系统瓶颈.

一个普通的连结过程中,因为Connection一般要用到本地方法,这些初始化是非常 耗用系统资源的.连结初始化,执行SQL语句,关闭连结在一次普通的连结中总的资源分配应该是65,10,25,当然不是这么精确,只是为了说明在一次连结中真正执行语消耗的资源是很少的.
如果你的服务器平均每5分种才有一次连结,你当然只用这种普通连结,因为整个一次连结过程才0.0几秒,你不必要再让连结池在余下的4.9几秒中也开着消耗资源,但如果每秒种有10次连结,这时普通连结消耗的初始化资源就很高了,用连结池就能显示它的优势.
所以到底采用什么方式连结,完全要根据你的应用,而且要进行实实在在的并发仿真测试.不要看到书上说什么方式好就相信,真正的构架一个平台是一种艺术而不只是一种技术,要多方面综合测试找到最佳的组合.很多陷井并不是技术所能发现的.比如你查看你的JVM还有很多空闲资源,但系统却已经崩溃了.因为象连结初始化这种资源消耗在本地方法中,JVM是反映不出来的,但却在同一物理内存中,还有很多这样的陷井,重要的是经验和测试!

时间: 2024-11-08 18:14:05

使用连结池的意义的相关文章

连结池详解

详解 到目前为目,JDBC2的连结池只是一个接口,没有真正的实现,JDBC3正在开发中,据报已经支持连结池,但..........JDBC3用了JNDI技术,连结池的配置可以让一个高手都烦死. 目前第三方已经实现的连结池当然是poolman,1.0版对一般用户来说已经足够用了.配置也简单,2.0版虽然增加了一些功能,但配置也是采用JNDI,对RMI和EJB不懂的朋友可能很烦.建议用1.0的了. 如果有兴趣,自己也可以实现连结池,最关键的技术也就是把连结作为参数传给一个BEAN,用完后返回这个参数

使用连接池的意义

我从来都这样说:不是所有的应用都要采用连结池,一般的轻载用了连结池反而会降低效率,要用什么方式连结,完全看你的系统瓶颈. 一个普通的连结过程中,因为Connection一般要用到本地方法,这些初始化是非常 耗用系统资源的.连结初始化,执行SQL语句,关闭连结在一次普通的连结中总的资源分配应该是65,10,25,当然不是这么精确,只是为了说明在一次连结中真正执行语消耗的资源是很少的. 如果你的服务器平均每5分种才有一次连结,你当然只用这种普通连结,因为整个一次连结过程才0.0几秒,你不必要再让连结

c#-C#中字符串常量池是什么意思,谁能给详细说说?字符串常量池的意义是什么

问题描述 C#中字符串常量池是什么意思,谁能给详细说说?字符串常量池的意义是什么 C#中字符串常量池是什么意思,谁能给详细说说?字符串常量池的意义是什么 解决方案 http://www.thinksaas.cn/group/topic/69377/ 具体可以去看clr via C# 解决方案二: 可以看下这篇文章的介绍:http://www.jb51.net/article/53212.htm

用连接池提高Servlet访问数据库的效率 (-)

servlet|访问|数据|数据库 Java Servlet作为首选的服务器端数据处理技术,正在迅速取代CGI脚本.Servlet超越CGI的优势之一在于,不仅多个请求可以共享公用资源,而且还可以在不同用户请求之间保留持续数据.本文介绍一种充分发挥该特色的实用技术,即数据库连接池. 一.实现连接池的意义 动态Web站点往往用数据库存储的信息生成Web页面,每一个页面请求导致一次数据库访问.连接数据库不仅要开销一定的通讯和内存资源,还必须完成用户验证.安全上下文配置这类任务,因而往往成为最为耗时的

几种java线程池的实现算法分析

1. 前言 本文发表与infoq,因版权属于个人顾再此转载. 在阅读研究线程池的源码以前,只知道如何使用,不了解其内部实现的具体细节,一直感觉是非常高深的技术,研究后才发现,线程池的实现是如此精巧.本文从技术角度分析了线程池的本质原理和组成,同时分析了JDK.Jetty6.Jetty8.Tomcat的源码实现,对于想了解线程池本质.更好的使用线程池或者定制实现自己的线程池的业务场景具有一定指导意义. 2. 使用线程池的意义 l 复用:类似WEB服务器等系统,长期来看内部需要使用大量的线程处理请求

JAVA线程池代码浅析

1. ExecutorService Java从1.5开始正式提供了并发包,而这个并发包里面除了原子变量,synchronizer,并发容器,另外一个非常重要的特性就是线程池.对于线程池的意义,我们这边不再多说. 上图是线程池的主体类图,ThreadPoolExecutor是应用最为广泛的一个线程池实现(我也将在接下来的文字中详细描述我对这个类的理解和执行机制),ScheduledThreadPoolExecutor则在ThreadPoolExecutor上提供了定时执行的等附加功能,这个可以从

java 的 连 接 池

问题描述 我现在做一个java应用程序,不是b/s的.需求是用quartz,根据任务列表,定时对db做比较频繁,并且有点耗时的操作.这种情况下,那我需要用连接池吗?还是用长连接,长Statement,我甚至可以不关闭他们,等程序停止的时候才关闭Statement和connection.感觉长连接效率应该比连接池高点.因为我们的系统不用考虑,连接断掉自动重连的功能,所以觉得用连接池更每什么意义啊!只是我想不明白如果我的整个系统只有一个static的connecion的话,如果某个时间点,有两个线程

线程池的原理和基本实现

线程创建的基本知识 (1)创建线程 创建线程有两种方式:继承Thread或实现Runnable. Thread实现了Runnable接口,提供了一个空的run()方法,所以不论是继承Thread还是实现Runnable,都要有自己的run()方法.  一个线程创建后就存在,调用start()方法就开始运行,调用wait进入等待或调用sleep进入休眠期,顺利运行完毕或休眠被中断或运行过程中出现异常而退出销毁. (2)线程的生命周期 当线程被创建之后,不是一启动就进入执行状态,也不是一直处于执行状

JavaWeb 后端 <十> 之 数据池 C3P0 DPCB JNDI

一.数据库连接池原理:(理解) //模拟数据库连接池的原理 public class ConnectionPoolDemo {     private static List<Connection> pool = new ArrayList<Connection>();     static{         try {             for(int i=0;i<10;i++){                 Connection conn = JdbcUtil.