怎么配置MySQL数据库超时设置呢

248人已阅读 2018-08-22 17:27:57
导读 在这里我们不建议使用socket timeout来进行限制statement的执行时长
UI设计培训 java开发培训 大数据开发培训 web前端开发培训 ocp认证培训 产品经理培训 交互设计培训 MYSQIOC培训 平面设计培训 网页设计培训 ps培训 数据分析挖掘培训 python人工智能培训

新闻详情

2018-08-22 17:27:57

怎么配置MySQL数据库超时设置呢


  在这里我们不建议使用socket timeout来进行限制statement的执行时长

  最近备战京东双11,在配置MySQL的超时配置发现有很多地方可以设置。这么多超时的配置有什么影响,以及配置会有什么影响呢?今天的文章就让大数据培训老师和大家来分析一下。
  1.JDBC超时设置
  connectTimeout:表示等待和MySQL数据库建立socket链接的超时时间,默认值0,表示不设置超时,单位毫秒,建议30000
  socketTimeout:表示客户端和MySQL数据库建立socket后,读写socket时的等待的超时时间,linux系统默认的socketTimeout为30分钟,可以不设置
  2.连接池超时设置
  maxWait:表示从数据库连接池取链接,连接池没有可用连接时的等待时间,默认值0,表示无限等待,单位毫秒,建议60000
  大数据
  3.MyBatis查询超时
  defaultStatementTimeout:表示在MyBatis配置文件中默认查询超时间,单位秒,不设置则无线等待
  大数据
  如果一些sql需要执行超过defaultStatementTimeout可以通过Mapper文件单独的sql的timeout进行配置
  大数据
  4.事务超时
  事务超时用于控制事务执行的超时,执行时间是事务内所有代码执行总和,单位为秒。
  大数据
  1.Transaction Timeout
  Spring提供的transaction timeout配置非常简单,它会记录每个事务的开始时间和消耗时间,当特定的事件发生时就会对消耗时间做校验,当超出timeout值时将抛出异常。
  假设某个事务中*含5个statement,每个statement的执行时间是200ms,其他业务逻辑的执行时间是100ms,那么transaction timeout至少应该设置为1,100ms(200*5+100)。
  2.Statement Timeout
  statement timeout用来限制statement的执行时长,timeout的值通过调用JDBC的java.sql.Statement.setQueryTimeout(int timeout)API进行设置。不过现在开发者已经很少直接在代码中设置,而多是通过框架来进行设置。
  在iBatis中,statement timeout的默认值可以通过sql-map-config.xml中的defaultStatementTimeout属性进行设置。同时,你还可以设置sqlmap中select,insert,update标签的timeout属性,从而对不同sql语句的超时时间进行独立的配置。
  3.Socket timeout
  JDBC的socket timeout在数据库被突然停掉或是发生网络错误(由于设备故障等原因)时十分重要。由于TCP/IP的结构原因,socket没有办法探测到网络错误,因此应用也无法主动发现数据库连接断开。如果没有设置socket timeout的话,应用在数据库返回结果前会无期限地等下去,这种连接被称为dead connection。
  为了避免dead connections,socket必须要有超时配置。socket timeout可以通过JDBC设置,socket timeout能够避免应用在发生网络错误时产生无休止等待的情况,缩短服务失效的时间。
  不推荐使用socket timeout来限制statement的执行时长,因此socket timeout的值必须要高于statement timeout,否则,socket timeout将会先生效,这样statement timeout就变得毫无意义,也无法生效。

  以上就是海文国际教育小编为大家精心整理出来的内容啦,更多资讯记得定期关注我们哦!
上一篇: 一文带你了解java多线程 下一篇: 数据科学的基本内容

相关文章

推荐课程

查看全部课程
重庆海文国际教育

重庆海文国际教育

渝北校区

查看全部校区 进入官方主页