小言_互联网的博客

Mysql调优(一)——性能监控

204人阅读  评论(0)

一、大纲图


【Mysql调优.xmind】

二、Mysql调优简写

2.1 性能监控

2.1.1 使用show profile查询剖析工具,可以指定具体的type

此工具默认是禁用的,可以通过服务器变量在会话级别动态的修改:

set profiling=1;

当设置完成之后,在服务器上执行的所有语句,都会测量其耗费的时间和其他一些查询执行状态变更相关的数据。

select * from emp;

在mysql的命令行模式下只能显示两位小数的时间,可以使用如下命令查看具体的执行时间:

show profiles;

执行如下命令可以查看详细的每个步骤的时间:

show profile for query 1;
  • type

    • all:显示所有性能信息

      show profile all for query n
      
    • block io:显示块io操作的次数

      show  profile block io for query n
      
    • context switches:显示上下文切换次数,被动和主动

      show profile context switches for query n
      
    • cpu:显示用户cpu时间、系统cpu时间

      show profile cpu for query n
      
    • IPC:显示发送和接受的消息数量

      show profile ipc for query n
      
    • Memory:暂未实现

    • page faults:显示页错误数量

      show profile page faults for query n
      
    • source:显示源码中的函数名称与位置

      show profile source for query n
      
    • swaps:显示swap的次数

      show profile swaps for query n
      

show profile 5.x版本可用,高版本已经被performance schema替代。

2.1.2 使用performance schema来更加容易的监控mysql(后续补充)

  • MYSQL performance schema详解.md(附件)

2.1.3 使用show processlist查看连接的线程个数,来观察是否有大量线程处于不正常的状态或者其他不正常的特征

  • 属性说明

    • id表示session id

    • user表示操作的用户

    • host表示操作的主机

    • db表示操作的数据库

    • command表示当前状态

      • sleep:线程正在等待客户端发送新的请求
      • query:线程正在执行查询或正在将结果发送给客户端
      • locked:在mysql的服务层,该线程正在等待表锁
      • analyzing and statistics:线程正在收集存储引擎的统计信息,并生成查询的执行计划
      • Copying to tmp table:线程正在执行查询,并且将其结果集都复制到一个临时表中
      • sorting result:线程正在对结果集进行排序
      • sending data:线程可能在多个状态之间传送数据,或者在生成结果集或者向客户端返回数据
    • info表示详细的sql语句

    • time表示相应命令执行时间

    • state表示命令执行状态


转载:https://blog.csdn.net/moneywenxue/article/details/128195287
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场