-
线程池数目和数据库连接数的关系5
我们在使用JDBC操作数据库的时候,所配置的数据源中会指定该数据源可以获取的最大连接数目,如下:<!-- 日志中心的数据源 --> <pool name="dataCenter" type="dbcp" db="oracle"> <property name="driverClassName" value="oracle.jdbc.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@20.26.11.99:1521:CSIBM02" /> <!--property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:XE"/--> <property name="username" value="aimon"/> <property name="password" value="aimon"/> <property name="initialSize" value="0"/> <property name="maxActive" value="2"/> <property name="maxIdle" value="2"/> <property name="maxWait" value="20000"/> </pool>
这里的maxActive配置为2,表示最多可以获取2条数据库连接。
那么,问题来了。。。。(不是蓝翔)
如果我有一个线程池的任务就是使用该数据源去操作数据库(无其他耗时操作),那么这个线程池的线程数目是不是不应该超过数据源里面配置的 maxActive?
我的理由是,所有的线程都需要获取连接,而连接只有2个,所以同时处理的线程最多只有2个,其他的都在等待。
不知道我这样的理解是否正确2014年10月11日 14:25
2个答案 按时间排序 按投票排序
-
采纳的答案
线程要做的和DB相关的事情所花的时间不是特别长的话,线程池的数量 > DB连接池的数量是没问题的。因为线程很快就干完和数据库相关的事之后再干别的事情的时候,连接是返回DB连接池了的,这样就算这个线程没整体完事,DB连接也可以供别的线程使用。
比如你一个线程需要走100秒,其中只有10秒是干和DB相关的事情,那么拍脑袋粗略的算2个DB连接可以供20个线程使用。2014年10月11日 16:53
-
线程和db connection没有必然的耦合
connection的close就已经释放了这个连接至线程池中,其他的线程也可以获得该连接2014年10月11日 14:45
相关推荐
例如,可以使用Python脚本编写程序来监控并收集数据库的活动连接数、配置操作系统的关键参数或发布中间件的war包等任务。如果依靠传统手段,这些任务的完成将耗费大量的人力和时间。而通过线程池,可以快速地处理...
与互斥锁(mutex)不同的是,信号量允许一定数量的线程同时访问共享资源,这使得它非常适合用于实现那些包含有限数量资源的对象,如线程池和数据库连接池。 #### 信号量简介 信号量可以看作是一种增强版的互斥锁。...
总而言之,Java的无关性、数据库连接池和线程池的概念是Java面试中的重要考点,它们涵盖了Java编程的基础知识以及性能优化的实践技能,对于希望在Java开发领域深造的求职者来说,深入理解这些概念和它们的应用是非常...
- **newFixedThreadPool**:创建固定数目线程的线程池。 - **newCachedThreadPool**:创建一个可缓存的线程池,会根据需要创建新的线程。 - **newSingleThreadExecutor**:创建一个单线程化的Executor。 - **...
`Initial Capacity`是数据库物理连接的初始数目,`MaxCapacity`定义了最大连接数,避免过多连接导致数据库压力过大。`Capacity Increment`是每次增加连接的数量,应根据实际需求合理设定。`Statement Cache Type`...
- **Windows操作系统的优化**:推荐使用服务器版本的Windows操作系统,因为非服务器版本可能在用户数、网络连接数等方面存在限制。此外,还需定期为操作系统安装最新的安全补丁。 ##### 2.1.3 Tomcat与其他Web...
用户连接数 .......... 56 打开的数据库、打开的索引和打开的对象 .......... 57 锁数目 .......... 57 数据库设备和磁盘 I/O 结构 .......... 58 使用内存的其它参数 .......... 58 并行处理 .......... 59 远程...
- **列数目和大小**:过多或过大的列会增加存储开销和查询复杂度,需适度。 - **最大长度**:对表达式、变量和存储过程参数的限制,超出可能引发性能问题。 - **登录数**:并发用户数过多可能导致资源争用,需合理...
第7章 持久化和数据库 273 引言 273 7.1 使用marshal模块序列化数据 275 7.2 使用pickle和cPickle模块序列化数据 277 7.3 在Pickling的时候压缩 280 7.4 对类和实例使用cPickle模块 281 7.5 Pickling被绑定...
实例150 卡车和卡车司机之间的关系 229 实例151 双色球 231 8.2 成员变量和方法 236 实例152 使用类作为成员变量 236 实例153 构造方法 237 实例154 使用静态成员变量计算内存中实例化的对象数目 ...
实例150 卡车和卡车司机之间的关系 229 实例151 双色球 231 8.2 成员变量和方法 236 实例152 使用类作为成员变量 236 实例153 构造方法 237 实例154 使用静态成员变量计算内存中实例化的对象数目 239 实例155 实现加...
实例150 卡车和卡车司机之间的关系 229 实例151 双色球 231 8.2 成员变量和方法 236 实例152 使用类作为成员变量 236 实例153 构造方法 237 实例154 使用静态成员变量计算内存中实例化的对象数目 239 实例155...
实例150 卡车和卡车司机之间的关系 229 实例151 双色球 231 8.2 成员变量和方法 236 实例152 使用类作为成员变量 236 实例153 构造方法 237 实例154 使用静态成员变量计算内存中实例化的对象...
实例150 卡车和卡车司机之间的关系 229 实例151 双色球 231 8.2 成员变量和方法 236 实例152 使用类作为成员变量 236 实例153 构造方法 237 实例154 使用静态成员变量计算内存中实例化的对象数目 239 实例155 实现加...
线程、线程池、引擎和 CPU ..................................................... 8 各种逻辑页大小 ........................................................................ 9 列数目和列大小 .................