Proxool 连接池: 第一次执行连接的时候connection很慢大概需要3S才可以得到连接。
   请问,为什么呢?
如果,是我XML问题? 请看如下:{<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
  <proxool>
    <alias>zzsoft</alias>
     <driver-url>jdbc:oracle:thin:@localhost:1521:zzsoft</driver-url>
    <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
    <driver-properties>
      <property name="user" value="sangmin"/>
      <property name="password" value=" "/>
    </driver-properties>
    <maximum-connection-count>100</maximum-connection-count>
    <minimum-connection-count>10</minimum-connection-count>
    <house-keeping-sleep-time>90000</house-keeping-sleep-time>
    <prototype-count>5</prototype-count>
    <test-before-use>true</test-before-use>
    <house-keeping-test-sql>select 1 from dual</house-keeping-test-sql>
  </proxool>
</something-else-entirely>
} 大概没有错误吧!
我实验结果速度很慢。请看楼下程序:{public static Connection getConnection() {
try {
long t1 = System.currentTimeMillis();
JAXPConfigurator.configure("C:\\proxool.xml", false);
Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");//proxool驱动类        
Connection conn = DriverManager.getConnection("proxool.zzsoft");
long t2 = System.currentTimeMillis();
System.out.println("程序所需时间:" + (t2 - t1) + "ms");
return conn;
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
}
大概需要3秒到-2.7秒吧!

解决方案 »

  1.   

    连接oracle数据库是比较慢的,特别是非本机数据库,我jdbc直连有时也要3~4s,楼主别担心,不是proxool的问题。
      

  2.   

    哎,我做了很多测试大概情况下时间都是在3-4秒作用吧!首先,第一次初始化连接的时候速度很慢如果我可以不计,那么该用户第二次执行DML语句或者查询语句的时候大概需要10-18秒作用吧!! 数据量为50W吧!!
    如果,该用户同时执行同样的语句速度很快,如果换其他语句的话第一次很慢我想是不是连接池也好JDBC也好他们的CON不能共享啊
    其次,测试:{
    开启六个浏览器同时执行同样的操作发现执行的时间效率结果是一样的、这样的情况下让我好伤心呢。我还以为proxool能把CON共享呢。。测试数据50W+ 期间还有BLOB大对象。
    最后,测试大数据分页查询:效果一般没有感觉速度快到哪去呢!! 我使用的是过程查询。。没发现哎。
    莫非我的过程不好吗。。恶心死我啦。

    现在,我真是无奈啦。
    LS,你说能不能把CON共享呢!!!! 多个用户有没有可能同时共享一个CON呢!如果,这样的情况下估计速度很快吧!!
      

  3.   

    因为一般的连接池的粒度都是到连接级别的,比如,你拿了这个连接,我就拿不到了,所以不能共享。如果,你在CallableStatement级别做共享,估计应该可以。比如,一个Connection,可以同时开20个CallableStatement,做DML的时候,不是直接取Connection,而是取Connection中的CallableStatement,可能可以做到Con共享。不过这种方式不是很安全,比如我拿了CallableStatement,然后把连接关了,但是你拿了这个Con的一个Statement,我关了,那么你也咯屁了呵呵,不知道你看明白没有另外,你说做一个DML要8~10秒,是不是你用Statement而不是PreparedStatement?但同时你又说有BLOB,BLOB一般是比较慢的,那也没办法,猜不出你到底哪里慢了
      

  4.   

    我使用的是Pre啦。
    例子:
    我是根据主键或者多个表的主键外键来查询数据
    数据中存在大对象。。其实,大对象就是execal啦如果,查询过程中不存在BLOB字段时间消耗不到1秒如果存在大概所需时间为3-6秒吧!这个时间不算准确。
    这个时间是这样计算的哈、
    从客户端到后台的分析遍历在把结果集传到客户端展示所需的时间总共:3-6秒而已。如果,单计算某个方法运行多长时间的话不到1秒忽略不计。
    如,拼SQL 执行SQL 判断SQL(在着个过程中还有很多细节比较复杂如要或许每个表的主键值和外键值很简单 把登录用户的用户记住下来查询一条记录在取出相应的ID号在根据ID号取出每个表中的主外建号速度很快忽略不计) 返回结果集拼成XML 返回给客户端、客户端解析 展示 等等。
    这个方法如果使用MAIN测试大概需要2.6S
    如果,使用客户端测试大概需要15S。。无语啦。今天,再次测试使用tomcat+oracle 来进行操作。
    没想到的事情发生啦。
    客户端时间大概是:1.6s。
    MAIN函数的大概时间:不到1秒忽略不计。再次测试结果下反省了。
    为什么?proxool连接池反映速度如此过慢呢!
    还有jdbc自己手写的连接池很慢跟proxool差不多一样速度。
    至于c3p0没有测试过。此项目使用的存JDBC
      

  5.   

    现在,我都很少来CSDN了真不好意思哈。因为,感觉自己CSDN牛人越来越少啦
      还不如自己冷静下来思考一下解决得啦。。
    很高兴认识楼上的兄台。