作为一个MySQL的开发者,日常工作中免不了会处理一些数据库运维或者监控的事情。查看一下正在执行的SQL语句,看一下SQL语句的执行状态,是否存在锁的情况,了解一下执行了多长时间,所以你一定会知道:
这个时候你会发现,进程中有很多sleep的进程,存在了很长时间并且一直存在着,浪费了很多的内存、CPU资源,同时这些不干活的进程铺满了屏幕,影响了你分析正在执行的SQL。下面我们就sleep进程具体研究一下。
Thread Command Values
常见的一些线程命令值
The thread is executing a statement.
Execute
The thread is executing a prepared statement.
The thread is waiting for the client to send a new statement to it.
不知道MySQL为什么叫这些为命令,可能是为了与它更细的状态区分吧。看到这些sleep的进程,该怎样去处理他们呢?下面介绍两种方法。
01
修改数据库系统设置
查看一下系统的参数设置,重点关注interactive_timeout & wait_timeout,系统默认是8个小时,很明显这个时间很长,所以sleep进程一直挂着而不会自动结束。
简单的方法直接进行参数设置,一次生效
如果想让设置永久生效,需要修改配置文件
编辑my.cnf文件,增加wait_timeout和interactive_timeout参数设置,重启数据库
修改完成后可验证查看是够修改成功。
02
shell结束sleep进程
以上是MySQL提供的机制,自动结束sleep进程,设置简单,一劳永逸。不过这种设置是全局的,不够灵活,下一次介绍如果通过shell结束sleep进程,并可以根据一些特定的条件筛选。
下期再见
如果你喜欢的话,请关注
如果你觉得是干货,请收藏
如果你觉得值得分享,请转发
欢迎大家留言
领取专属 10元无门槛券
私享最新 技术干货