常用语句
state不为空的状态
SELECT * FROM information_schema.PROCESSLIST WHERE STATE != ''
按照执行时间排序
SELECT * FROM information_schema.PROCESSLIST WHERE COMMAND != 'sleep' ORDER BY TIME DESC
STATE常见状态
官方文档https://dev.mysql.com/doc/refman/5.7/en/general-thread-states.html
Sending data
线程正在读取和处理SELECT语句的行 ,并将数据发送到客户端
。
由于在此状态期间发生的操作往往会执行大量磁盘访问(读取),因此它通常是给定查询生命周期中运行时间最长的状态。
这是最常见的状态,也是最模糊的状态。
这个状态并不是字面理解的“发送数据”
,在读取数据开始、到数据发到客户端之前
,都可能是这个状态。如果在这个状态持续的时间比较久,需要拿到processlist.info,通过explain进一步定位问题。常见的问题有下面几种:
索引不理想、导致回表较多,磁盘压力大、一直在等待磁盘读完数据
;可通过explain的rows
看到特征文件排序
等待,特征是cpu会变高
;可通过explain的extra
看到特征
closing tables
该线程正在将更改的表数据刷新到磁盘并关闭已使用的表
。这应该是一个快速的操作。如果没有,请验证您没有完整磁盘并且磁盘使用不是很大.
磁盘不足的重要状态。
Copying to tmp table on disk
服务器正在复制到磁盘上的临时表
。临时结果集变得太大(“MySQL中的内部临时表使用”,超过tmp_table_size)。因此,线程正在将临时表从内存更改为基于磁盘的格式以节省内存。
配置的临时表空间不足时,临时表会从内存写入磁盘,这个动作比较耗时。
相关的状态还有Creating tmp table
: 该线程正在内存或磁盘上创建临时表。如果表在内存中创建但稍后转换为磁盘表,则该操作期间的状态将为Copying to tmp table on disk
Updating
线程正在搜索要更新的行并正在更新它们.
一般情况下update因为有主键约束会很快,但有一种情况发生时,会导致update等待严重: 有一个update语句没有走上唯一索引,进行了索引扫描,扫描时索引行是被锁住的,其他更新只能等待
。
Writing to net
服务器正在将数据包写入网络.
注意数据库服务器的网络吞吐量是否超限或网络环境较差
,或者是否返回的数据太多了
。
Waiting for table lock
该线程正在等待一个表格锁
Sending data
该线程正在将数据发送到客户端
COMMAND常见状态
官方文档https://dev.mysql.com/doc/refman/5.7/en/thread-commands.html
Sleep
该线程处于空闲状态,等待新的请求
Query
该线程正在执行查询语句
Connect
该线程正在建立一个新的连接
Init DB
该线程正在初始化一个新的数据库连接
Field List
该线程正在获取一个表格的列信息
Statistics
该线程正在收集性能统计信息
Prepare
该线程正在准备一个SQL语句
Execute
该线程正在执行一个SQL语句
Binlog Dump
该线程正在处理二进制日志
Table Dump
该线程正在处理数据表的复制常见的
最新评论
# 这只是一个创建远程登录并授权的语句、仅作为记录 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Fit2cloud!' WITH GRANT OPTION;
当MGR集群初始化结束后,需要开启MGR集群自启动(需要有一台节点是自动开启引导) loose-group_replication_start_on_boot = ON #设置节点是否在启动时自动启动 MGR 集群 loose-group_replication_bootstrap_group = ON #设置节点是否作为初始引导节点启动集群
密码:blog.sirliu.com
本内容密码:blog.sirliu.com 最新整理的文章在这里喔:https://blog.sirliu.com/2018/11/shell_lian_xi_ti.html