mysql查看历史连接数,mysql连接参数配置

前言

mysql性能优化涉及到很多方面,在上一篇中通过explain打印出sql的执行计划可以作为指导开发人员进行sql优化是一个方面,另外,mysql自身的参数配置也很多,比如连接参数(connection),查询缓存等,合理的设置mysql参数对于性能优化也是非常重要的

下面对mysql的连接参数,即connection相关的参数配置做简单的说明

mysql参数设置的两种方式

在实际配置mysql参数时,通常有2种做法,可以通过my.cnf(linux)进行设置(持久化设置),也可以通过命令,set global 参数名 = 参数值(只对当前连接会话生效)的方式设置

查看当前mysql的connection信息

show VARIABLES like '%connection%';

8e4cfd87b11dfc950dd01bbf89897714.png

默认情况下,mysql的连接数量为151个,通过set的方式设置下,

set GLOBAL MAX_CONNECTIONS=200;

8af119ea79b800b11d4998358157b5d5.png

如果在my.cnf进行设置

683d434e313ff089e8ffaebf32dc24f0.png

配置完毕后,重启下mysql服务,connections连接数也变成300

systemctl restart mysqld.service

00d22116186c1e563f5ec9feed925daf.png

总结来说:

对当前的连接,连接数优先级为 ,set > 配置,值得注意的是,部分参数在set global并不会立即生效,而是需要重新建立连接后才有效

set global 在mysql运行过程中会一直生效,直到mysql服务关闭

connection常用参数设置

查看最大连接数

最大连接数,代表当前数据库同时允许的最大连接数量,连接的状态通常有2种,sleep / query,sleep代表处于闲置的状态,query代表正处于任务处理的状态

sleep + query 连接的总量不能超过 max_connections的设置值,否则会出现 : too many connections 的错误

b805dfaa4508d88d743056b5404f6af0.png

查看各个状态的连接情况

b411aa0f38cdcdd85eb37dd1ce5318d4.png

Threads_cached:一共缓存过多少连接,如果在mysql服务器的配置文件中设置了thread_cache_size参数,当前客户端断开之后,服务器处理此客户的线程将会缓存起来,以备下一个连接进来的客户而不是立即销毁(前提是缓存数量未达到上限),可以通过命令:set global thread_cache_size=50 设置或者在 my.cnf中配置

Threads_connected: 代表当前已经有多少个连接(sleep+query)

Threads_created:历史总共创建过多少个连接

Threads_running:代表有几个连接正处于"工作"状态,也是目前的并发数

查看mysql历史运行过程中最大连接数以及出现的时点

d8d3af563841c71e824d02acd4395d32.png

这是一个很有用的参数,可以用于指导一个系统的数据库服务器配置比较合理的最大连接数,因为最大连接数并不是越大越好,可以在系统上线时将 max_connections的值设置的大一点,等到运行一段时间之后,通过观察上面的这个参数值,再进行设置,这也是指导DBA或者开发人员对于mysql服务器是否需要进行扩容或者增加节点的一个很重要的衡量参数

查看mysql设置的连接缓存队列数

703aa6a3971a5e131ed4b43296a2b830.png

back_log:设置保存多少个连接数据库的请求到堆栈(缓冲区),就是说,如果mysql的当前连接数达到了max_connections的最大值时,新来的请求将会被保存在堆栈中,以等待前面的某些连接资源释放,该堆栈的数量即 back_log,如果等待连接的数量超过了back_log,将不会授予连接资源,报出相关的连接错误,back_log可以简单理解为一个连接的缓冲队列

如果了解Java中的线程池原理的同学就很好理解这个概念了,这个可以作为线程池调优参数的配置,在mysql中,也可以作为mysql服务器性能调优的指导,假如你的服务器配置还可以的话,可以适当的调大这个参数,以获得更大的并发处理

wait_timeout 与 interactive_timeout

77db94af1dd72e83e35809107c51333c.png

这两个参数都是连接在超过一段时间之后,数据库自动关闭,在这个期间持续的时间,默认是8个小时

wait_timeout :针对非交互式连接,比如Java通过JDBC进行连接

interactive_timeout:交互式连接,比如通过mysql的客户端进行的连接

查看当前数据库连接详情状况

9a21e97671767c9db6ee745c049e0ee7.png

通过这个命令可以清楚的展现出当前数据库连接的详细情况,比如query对应的应用IP,sleep对应的连接客户端信息、连接时间等,可以在某些情况下用于监控mysql的整体连接情况

本篇主要总结了与mysql的connection相关的几个常用配置参数的使用,在实际开发中,可以作为运维或者调优的配置进行参考和使用,本篇到此结束,最后感谢观看!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值