关于数据库mysql连接超时以及连接池超时的一些问题

1.本文主要整理关于mysql的一些问题

2.首先mysql服务器默认的连接超时和数据库连接超时是两码事,不能混为一谈

3.什么是数据库连接超时呢?

     答:数据库连接超时是指当服务连接到数据库但不对其做任何操作时等待到一定时间之后
     这个链接就会与数据库断开,当再次对数据库进行操作时会报数据库连接超时或者连接关闭异常
     mysql的连接默认最长等待时间为28800s也就是8个小时
     解决办法:(1)重启服务(2)把链接等待超时timeout设置长一点

5.什么是数据库连接池的连接超时时间呢?
    答:连接池超时时间是指当连接数超过连接池的最大连接数时且没有空闲连接时,
    如果再有其他请求需要连接那么该请求会一直等待到连接池配置的最大等待connection-timeout如果还没有
    连接那么就会报错,当在最大等待时间内有连接释放了则会从池中拿到释放的连接进行操作

6.查看mysql连接最大超时时间

查看mysql数据库服务连接最大超时时间,默认是28800S也就是8小时
show global variables like '%timeout%';
查看mysql数据库允许的最大的连接数
show variables like '%max_connections%';
修改mysql最大连接数:
windows系统在my.ini文件中找max_connections
liunx系统找my.cnf文件


oracle数据库允许的最大连接数:
select value from v$parameter where name = 'processes';

oracle当前的连接数
select count(*) from v$process; 
修改oracle最大连接数:
alter system set processes = 500 scope = spfile;

7.图片

关于数据库mysql连接超时以及连接池超时的一些问题_第1张图片

关于数据库mysql连接超时以及连接池超时的一些问题_第2张图片

关于数据库mysql连接超时以及连接池超时的一些问题_第3张图片

8.用navicat查看mysql的数据库连接

操作步骤:工具->服务器监控->选择需要监控的数据库

关于数据库mysql连接超时以及连接池超时的一些问题_第4张图片

9.顺便带上HikariDataSource连接池的配置参数意义:

spring:
  datasource:
      type: com.zaxxer.hikari.HikariDataSource
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/pc
      username: root
      password: root
      hikari:
        minimum-idle: 5
        #连接池中允许的最大连接数。缺省值:10
        maximum-pool-size: 20
        auto-commit: true
        #一个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟
        idle-timeout: 30000
        pool-name: DatebookHikariCP
         # 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 缺省:30秒
        connection-timeout: 30000

当连接数达到最大数之后,经过300s之后连接池中的连接会被释放掉恢复到最小连接数

    解释:最小连接数2,最大连接数10,当存在高并发情况下会因为2个连接不够用所以会再创建出8个连接供其使用
    这时连接池中已经达到最大连接数其他请求再过来则需要等待其他请求释放
    连接才能继续操作,当并发期过去之后,连接池经过一段时间会释放掉连接池中
   多出的8个连接数恢复到最初的2个连接数

HikariDataSource参数参考连接:

https://www.jianshu.com/p/c1a5bc20eb0b

https://blog.csdn.net/ssxueyi/article/details/83505322

你可能感兴趣的:(数据库)