Mysql经典的“8小时问题”

 更新时间:2015年04月26日 15:59:38   投稿:hebedich  
MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而 c3p0 连接池则以为该被断开的连接依然有效。

假设你的数据库是mysql,如果数据源配置不当,将可能发生经典的“8小时问题”。原因是mysql在默认情况下,如果发现一个连接的空闲时间超过8小时,将会在数据库端自动关闭这个连接。而数据源并不知道这个连接已经关闭了,当它将这个无用的连接返回给某个dao时,dao就会报无法获取connection异常。

    如果采用dbcp的默认配置,由于testOnBorrow属性的默认值是true,数据源在将连接交给dao前,会事先检测这个连接是否是好的,如果连接有问题(在数据库端被关闭),则会取一个其他的连接给dao。所以并不会有“8小时问题”。如果每次将连接交给dao时都检测连接的有效性,在高并发的应用中将会带来性能的问题,因为它会需要更多的数据库访问请求。

    一种推荐的高效的方式是:将testOnBorrow设置为false,而将“testWhileIdle”设置为true,再设置好testBetweenEvictionRunsMillis值(小于8小时)。那些被mysql关闭的连接就可以别清除出去,避免“8小时问题”。

    当然,mysql本身也能调整interactive-timeout(以秒为单位)配置参数,更改空闲连接的过期时间。所以,在设置timeBetweenEvictionRunsmMillis值时,必须首先获知mysql的空闲连接的最大过期时间。

    c3p0对于有效连接的检测,请参照dbcp配置方式。

以上所述就是本文的全部内容了,希望大家能够喜欢。

相关文章

  • 查询MySQL安装路径的两种方法

    查询MySQL安装路径的两种方法

    这篇文章主要给大家介绍了关于查询MySQL安装路径的两种方法,在使用MySQL时有时需要知道MySQL的安装路径才能进行相关操作,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • windows下mysql 8.0.13 解压版安装图文教程

    windows下mysql 8.0.13 解压版安装图文教程

    这篇文章主要为大家详细介绍了windows下mysql 8.0.13 解压版安装图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • 简述MySQL 正则表达式

    简述MySQL 正则表达式

    大家都知道MySQL可以通过 LIKE ...% 来进行模糊匹配,MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配。对mysql正则表达式知识感兴趣的朋友一起看看吧
    2016-11-11
  • mysql中的limit和offset用法详解

    mysql中的limit和offset用法详解

    这篇文章主要介绍了mysql中的limit和offset用法详解,limit一般被用来排序,offset一般和limit组合使用,本文对这两个函数进行详细介绍,需要的朋友可以参考下
    2023-10-10
  • MySQL之权限以及设计数据库案例讲解

    MySQL之权限以及设计数据库案例讲解

    这篇文章主要介绍了MySQL之权限以及设计数据库案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • MYSQL  group by 有哪些注意事项

    MYSQL  group by 有哪些注意事项

    这篇文章主要介绍了MYSQL  group by 有哪些注意事项,比如我们不能在 group by 之后添加 where 查询语句,更多相关分享,需要的朋友可以参考下面文章内容
    2022-07-07
  • MySQL的存储函数与存储过程的区别解析

    MySQL的存储函数与存储过程的区别解析

    这篇文章主要介绍了MySQL的存储函数与存储过程的区别,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • mysql连接过多和死掉以及拒绝服务的解决方法

    mysql连接过多和死掉以及拒绝服务的解决方法

    mysql连接过多和死掉以及拒绝服务的解决方法...
    2007-12-12
  • MySQL 实用命令

    MySQL 实用命令

    对于刚接触到mysql的朋友,需要的了解下,mysql的一些小技巧。
    2009-03-03
  • 不使用MySQL数据库的五个给力理由解析

    不使用MySQL数据库的五个给力理由解析

    众所周知,MySQL数据库虽然功能未必很强大,但因为它的开源、广泛传播,导致很多人都了解到这个数据库。
    2011-03-03

最新评论