processlist中哪些状态要引起关注(5页)Good is good, but better carries it.精益求精,善益求善。processlist 中哪些状态要引起关注一般而言,在 processlist 结果中假如常常能看到某些 SQL 的话,至少可以说明这些 SQL 的频率很高,通常需要对这些 SQL 进行进一步优化。在 processlist 中,看到哪些运行状态时要引起关注,主要有下面几个:状态建议copy to tmp table执行 ALTER TABLE 修改表结构时建议:放在凌晨执行或者采纳类似 pt-osc 工具Copying to tmp table拷贝数据到内存中的临时表,常见于GROUP BY 操作时建议:创建适当的索引Copying to tmp table on disk临时结果集太大,内存中放不下,需要将内存中的临时表拷贝到磁盘上,形成 #sql***.MYD、#sql***.MYI(在 5.6 及更高的版本,临时表可以改成 InnoDB 引擎了,可以参考选项default_tmp_storage_engine)建议:创建适当的索引,并且适当加大sort_buffer_size/tmp_table_size/max_heap_table_sizeCreating sort index当前的 SELECT 中需要用到临时表在进行ORDER BY 排序建议:创建适当的索引Creating tmp table创建基于内存或磁盘的临时表,当从内存转成磁盘的临时表时,状态会变成:Copying to tmp table on disk 建议:创建适当的索引,或者少用 UNION、视图(VIEW)、子查询(SUBQUERY)之类的,确实需要用到临时表的时候,可以在 session 级临时适当调大 tmp_table_size/max_heap_table_size 的值Reading from net表示 server 端正通过网络读取客户端发送过来的请求建议:减小客户端发送数据包大小,提高网络带宽/质量Sending data从 server 端发送数据到客户端,也有可能是接收存储引擎层返回的数据,再发送给客户端,数据量很大时尤其常常能看见备注:Sending Data 不是网络发送,是从硬盘读取,发送到网络是 Writing to net建议:通过索引或加上 LIMIT,减少需要扫描并且发送给客户端的数据量Sorting result正在对结果进行排序,类似 Creating sort index,不过是正常表,而不是在内存表中进行排序建议:创建适当的索引statistics进行数据统计以便解析执行计划,假如状态比较常常出现,有可能是磁盘 IO 性能很差建议:查看当前 io 性能状态,例如 iowaitWaiting for global read lockFLUSH TABLES WITH READ LOCK 整等待全局读锁建议:不要对线上业务数据库加上全局读锁,通常是备份引...