技术开发 频道

MySQL优化总结

  如果数据库慢了,想要看看mysql正在干什么,可以执行这个语句,可以列出mysql当前连接在执行的sql语句。  

Id    User Host db    Command       Time       State       Info
2599       oa    SVCTAG-91FFF2X:3726      penguin   Sleep       7321              <null>
2956       rw_penguin    SVCTAG-6HKDF2X:5481     penguin   Sleep       2293              <null>
2957       rw_penguin    CYSY-DL580-2:3925     penguin   Sleep       2162              <null>
2963       rw_penguin    CYSY-DL580-2:4122     penguin   Sleep       2162              <null>
2965       rw_penguin    CYSY-DL580-2:4270     penguin   Sleep       2162              <null>

  ………………………………………………………………

  以下内容摘自手册

  SHOW PROCESSLIST显示哪些线程正在运行。您也可以使用mysqladmin processlist语句得到此信息。如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程(也就是,与您正在使用的MySQL账户相关的线程)。如果您不使用FULL关键词,则只显示每个查询的前100个字符。

  本语句报告TCP/IP连接的主机名称(采用host_name:client_port格式),以方便地判定哪个客户端正在做什么。

  如果您得到“too many connections”错误信息,并且想要了解正在发生的情况,本语句是非常有用的。MySQL保留一个额外的连接,让拥有SUPER权限的账户使用,以确保管理员能够随时连接和检查系统(假设您没有把此权限给予所有的用户)。

  在来自SHOW PROCESSLIST的输出中常见的一些状态:

  · Checking table

  线程正在执行(自动)表格检查。

  · Closing tables

  意味着线程正在刷新更改后的表数据,并正在关闭使用过的表。这应该是一个快速的操作。如果不快,则您应该验证您的磁盘没有充满,并且磁盘没有被超负荷使用。

  · Connect Out

  连接到主服务器上的从属服务器。

  · Copying to tmp table on disk

  临时结果集合大于tmp_table_size。线程把临时表从存储器内部格式改变为磁盘模式,以节约存储器。

  · Creating tmp table

  线程正在创建一个临时表,以保持部分结果。

  · deleting from main table

  服务器正在执行多表删除的第一部分,只从第一个表中删除。

  · deleting from reference tables

  服务器正在执行多表删除的第二部分,从其它表中删除匹配的行。

  · Flushing tables

  线程正在执行FLUSH TABLES,并正在等待所有线程,以关闭表。

  · FULLTEXT initialization

  服务器正在准备执行一个自然语言全文本搜索。

1
相关文章