MySQL关键线程状态解读

  • checking permission:安全检查,检查是否有权限。
  • cleaning up :打扫战场 - 释放内存,释放持有的句柄等。
  • closing table:用完了,关闭该表,刷新到磁盘。如果长时间处于该状态,有可能磁盘满了。
  • copy to tmp table:执行alter table修改表结构时。建议凌晨执行。
  • copying to tmp table:拷贝数据到内存中的临时表,常见于group by操作时。建议创建索引。
  • copying to tmp table on disk:临时结果集太大,内存中放不下,需要将内存中的临时表拷贝到磁盘上,形成#sql***.MYD、#sql***.MYI。建议创建索引,加大sort_buffer_size/tmp_table_size/max_heap_table_size。
  • creating sort index:当前select中需要用到临时表在进行order by排序。
  • creating tmp table:创建基于内存或磁盘的临时表,当从内存转成磁盘临时表时,状态会转变成copying to tmp table on disk。建议创建索引。
  • freeing items:通常是cleaning up之后的状态,例如正在释放query cache。
  • Reading from net:表示server端正通过网络读取客户端发送过来的请求。建议减小客户端发送数据包大小,提高网络带宽质量。
  • removing tmp table:删除select中用完的临时表。
  • sending data:从server端发送数据到客户端,也有可能是接收存储引擎返回的数据,再发送给客户端,数据量很大时尤其经常能看见。建议通过索引或limit,减少需要扫描的数据量。(sending data不是网络发送,是从磁盘读取。发送到网络是writing to net)
  • sorting result:正在对结果进行排序,类似creating sort index,不过是正常表,而不是在内存中进行排序。建议创建索引。
  • statistics:进行数据统计以便解析执行计划,如状态比较经常出现,有可能是磁盘IO性能很差。建议查看当前IO性能状态,例如iowait。
  • system lock:正在等待系统级锁。建议关闭外部锁skip external locking(默认是关闭的)
  • waiting for global read lock:flush tables with read lock正等待全局读锁。
  • waiting for tables、waiting for table flush:FLUSH TABLES, ALTER TABLES, RENAME TABLE, REPAIR TABLE, ANAYLZE TABLE, OPTIMIZE TABLE等需要刷新表结构并重新打开。
  • waiting for lock_type lock:等待各种类型的锁:
    • waiting for event metadata lock
    • waiting for global read lock
    • waiting for schema metadata lock
    • waiting for stored function metadata lock
    • waiting for stored procedure metadata lock
    • waiting for table level lock
    • waiting for table metadata lock
    • waiting for trigger metadata lock

你可能感兴趣的:(mysql)