【数据库】数据库连接池配置 testOnBorrow 以你之姓@ 2022-08-31 04:39 186阅读 0赞 **本文目录** 一、testOnBorrow含义 二、testOnBorrow=false可能导致问题 三、连接池如何判断连接是否有效的? 四、总结 -------------------- Druid是一个由阿里开源的数据库连接池,Druid的配置非常丰富,但是设置不当会对生产环境造成严重影响,比如数据库的CPU使用率飙升会很严重,其实就是因为配置**testOnBorrow**由**false**修改为**true**导致的问题。 # 一、testOnBorrow含义 # **testOnBorrow**:如果为true(默认为false),当应用向连接池申请连接时,连接池会判断这条连接是否是可用的。 # 二、testOnBorrow=false可能导致问题 # 假如连接池中的连接被数据库关闭了,应用通过连接池**getConnection**时,都可能获取到这些不可用的连接,且这些连接如果不被其他线程回收的话;它们不会被连接池废除,也不会重新被创建,占用了连接池的名额,项目如果是服务端,数据库链接被关闭,客户端调用服务端就会出现大量的**timeout**,客户端设置了超时时间,会主动断开,服务端就会出现**close\_wait**。 # 三、连接池如何判断连接是否有效的? # * 常用数据库:使用$\{DBNAME\}ValidConnectionChecker进行判断,比如Mysql数据库,使用MySqlValidConnectionChecker的isValidConnection进行判断 * 其他数据库:则使用validationQuery判断 * 验证不通过则会直接关闭连接,并重新从连接池获取下一条连接。 # 四、总结 # 1.testOnBorrow能够确保我们每次都能获取到可用的连接,但是如果设置为true,则**每次获取连接时候都要到数据库验证连接有效性,这在高并发的时候会造成性能下降**,可以**将testOnBorrow设置成false,testWhileIdle设置成true这样能获得比较好的性能**。 2.testOnBorrow和testOnReturn在生产环境一般是不开启的,主要是性能考虑。失效连接主要通过testWhileIdle保证,如果获取到了不可用的数据库连接,一般由应用处理异常。 完结!
相关 数据库-----数据库连接池 @百度百科 ![Center][] [Center]: /images/20220721/39979dcdad014fb6a1579254a5398d26.png 古城微笑少年丶/ 2022年09月21日 11:56/ 0 赞/ 250 阅读
相关 【数据库】数据库连接池配置 testOnBorrow 本文目录 一、testOnBorrow含义 二、testOnBorrow=false可能导致问题 三、连接池如何判断连接是否有效的? 四、总结 ----------- 以你之姓@/ 2022年08月31日 04:39/ 0 赞/ 187 阅读
相关 数据库连接池 数据库连接池 1.概述 > 数据库连接池就是存放数据库连接(Connection)的集合 > 我们获取一个数据库连接是一个相对很麻烦的过程,如果我们获取一个数据 电玩女神/ 2022年06月09日 05:28/ 0 赞/ 277 阅读
相关 数据库连接池 连接池:把连接放在一个池里,它里面有很多连接 会给你空闲的连接使用,Java从数据源里面的得到连接 (线程池把连接放进去,会有连接的标志--占用/空闲 你去拿时-- 给你/等 一时失言乱红尘/ 2022年05月16日 00:16/ 0 赞/ 298 阅读
相关 数据库连接池 问题的提出:由于数据库的连接是一个有限的昂贵的资源,特别是在一些并发用户访问的网站上,要想提高程序的性能,必须对数据库连接的进行合理的管理。 解决方法:采用数据库连接池的方式 红太狼/ 2022年05月15日 07:08/ 0 赞/ 223 阅读
相关 数据库连接池 连接池直接使用别人提供的就可以,需要做的就是导入jar包和配置文件的使用按照他们的规范 jar包有 (fastjson.jar包可以不要,这个是使用json和前端进行数据交 快来打我*/ 2022年05月04日 03:27/ 0 赞/ 306 阅读
相关 数据库连接池 要是考虑到JDBC连接中用到Connection 在每次对数据进行增删查改都要开启、关闭,在实例开发项目中,浪费了很大的资源。因此采用连接池技术。 //数据库连接 pub 秒速五厘米/ 2022年02月14日 00:27/ 0 赞/ 347 阅读
相关 数据库连接池 一般进行数据库链接之前会建立对象Connection con = null; 在数据库操作完成之后会关闭数据库链接对象,即con.close(); 数据库连接池的概念是在 布满荆棘的人生/ 2021年12月15日 23:59/ 0 赞/ 384 阅读
相关 数据库连接池 今日知识 1. c3p0和Druid使用 2. DBUtils使用 3. SpringJDBC轻量级框架 4. 总结 c3p0和Dru 小鱼儿/ 2021年11月29日 10:36/ 0 赞/ 411 阅读
相关 数据库连接池 传统的jdbc连接数据库方式如下: 我们需要几个步骤:注册 JDBC 驱动程序注册( Class.forName(DRIVER\_NAME) ),通过DriverManag 爱被打了一巴掌/ 2021年09月10日 05:40/ 0 赞/ 522 阅读
还没有评论,来说两句吧...