软件开发Db2数据库访问

系统长时间不用第一次数据库访问呢非常慢?

开发环境,系统在长时间不访问(第二天),重新访问,系统地sql执行要在2秒以上,db2top查看,在db2中执行毫秒级的。通过javacore查看,感觉都堵在org/springframework/jdbc/datasource/DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:173(Compi...显示全部

开发环境,系统在长时间不访问(第二天),重新访问,系统地sql执行要在2秒以上,db2top查看,在db2中执行毫秒级的。通过javacore查看,感觉都堵在org/springframework/jdbc/datasource/DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:173(Compiled Code))获取数据库连接上了。连接写法如下:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName">
        <value>jdbc/xxxx</value>
    </property>
</bean>

问问大家,Was上有什么限制,说每次长时间不用,再重新获得数据库连接要重建吗?
连接池的最小连接数是10

收起
参与6

查看其它 1 个回答tongshuai的回答

tongshuaitongshuai数据库工程师北京新数科技有限公司

你这种情况应该采用了隐式激活数据库方法。
在db2数据库里,数据库启动其实分为两部分:启动实例、激活数据库。激活数据库就是启动数据库相关的线程、分配缓冲池、其它各种数据库用到的内存堆。
而激活数据库有两种方式:
1,显示激活,就是启动实例后执行激活数据库的命令:activate database DB_NAME,这种激活方式可以保持数据库一直处于激活状态。
2,隐式激活,就是启动实例后不执行计划数据库命令,而是用户发起connect 连接数据库的命令,这样数据库会先激活数据库,然后再把用户连接进来,当数据库所有用户都断开数据库连接之后,数据库会取消激活,等下次有用户连进来又再次激活。因为激活数据库需要消耗一定的时间,所以用户连接会比较旧。

互联网服务 · 2020-02-27
浏览2263

回答者

tongshuai
数据库工程师北京新数科技有限公司

tongshuai 最近回答过的问题

回答状态

  • 发布时间:2020-02-27
  • 关注会员:3 人
  • 回答浏览:2263
  • X社区推广