ibatis的自带的默认简单连接池性能

晚上打开浏览器从服务器取图片的时候发现速度慢的惊人(没有用任何服务器端缓存),大概会延迟很长时间才打开,后来去打日志,看了下:

Sun Apr 11 20:41:20 CST 2010
[DEBUG] 2010-04-11 20:41:27 :Created connection 25706868.
   [DEBUG] 2010-04-11 20:41:27 :{conn-100000} Connection
   [DEBUG] 2010-04-11 20:41:27 :{pstm-100001} PreparedStatement:    select * from cases limit ?,8  
   [DEBUG] 2010-04-11 20:41:27 :{pstm-100001} Parameters: [8]
   [DEBUG] 2010-04-11 20:41:27 :{pstm-100001} Types: [java.lang.Integer]
   [DEBUG] 2010-04-11 20:41:27 :{rset-100002} ResultSet

 可以看出这个是由于和数据库的连接开销非常大,日志中可以看出光是连接建立就花了7秒钟,吃惊。。。看来选一个好的数据库连接池是破在眉睫的事情 了,否则这QPS也实在太高了。

 

ibatis本身自己就带了连接池的,而且默认就是配上的,但是我请求了很多次发现效果也不好。用ibatis做连接mysql的持久层框架。一张 页面有8张图片,这些图片存储在数据库中,所以每请求一次页面至少要访问8次数据库,依次把这8张图片取回来。下面部分服务器日志:

   [DEBUG] 2010-04-11 20:45:50 :{rset-100357} Header: [Id, title, pic]
   [DEBUG] 2010-04-11 20:45:50 :{rset-100357} Result: [2, clock, [B@10a4d7c]
   [DEBUG] 2010-04-11 20:45:55 :Created connection 26137220.
   [DEBUG] 2010-04-11 20:45:56 :{conn-100358} Connection
   [DEBUG] 2010-04-11 20:45:56 :{pstm-100359} PreparedStatement:    select count(*) from cases   
   [DEBUG] 2010-04-11 20:45:56 :{pstm-100359} Parameters: []
 [DEBUG] 2010-04-11 20:45:56 :{pstm-100359} Types: []
   [DEBUG] 2010-04-11 20:45:56 :Returned connection 31966729 to pool.
   [DEBUG] 2010-04-11 20:45:56 :{rset-100360} ResultSet
   [DEBUG] 2010-04-11 20:45:56 :{rset-100360} Header: [count(*)]
   [DEBUG] 2010-04-11 20:45:56 :{rset-100360} Result: [17]
   [DEBUG] 2010-04-11 20:45:56 :Returned connection 4355837 to pool.
   [DEBUG] 2010-04-11 20:45:56 :Returned connection 4300404 to pool.
   [DEBUG] 2010-04-11 20:45:56 :Returned connection 21790187 to pool.
   [DEBUG] 2010-04-11 20:45:56 :Returned connection 23417981 to pool.
   [DEBUG] 2010-04-11 20:45:56 :Closed connection 26137220.

 可以看出ibatis的默认连接池simple模式建立了许多连接,并且确实有了重用。但是经过使用发现效果还是不理想。

 

最 后发现原来是自己的连接池没有配置,使用了默认的连接池,要么就是最大连接数太少,要么就是存在时间太短,马上就close掉了,后来用dbcp并配置了 下连接池,速度大增,原来每次点一个页面就要花7秒的,现在只要第一次花7秒,后来每次点都是毫秒级的了,下面是我的配置文件:

<transactionManager type="JDBC">  
        <dataSource type="DBCP">  
            <property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />  
            <property name="JDBC.ConnectionURL" value="jdbc:mysql://xxxxxx" />  
            <property name="JDBC.Username" value="root" />  
            <property name="JDBC.Password" value="xxxxxx" />  
            <property name="Pool.MaximumActiveConnections" value="15"/>
			<property name="Pool.MaximumIdleConnections" value="15"/>
			<property name="Pool.MaximumWait" value="1000"/>
        </dataSource>  
    </transactionManager>

 

数据库连接真的非常耗时,今天才算真正的体会到了,原来都是书本上知道的,有连接池真好,呵呵。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值