MySQL调优(一)性能监控
一 、使用show profile 查询剖析工具
- 此工具默认是禁用的,可以通过变量动态修改,设置后可以监控耗费时间
1.show profiles
查询所有运行SQL的执行时间
2.show profile
查询最近一次SQL的执行时间
3.show profile for query n
查询show profiles ID 为n 的SQL执行时间
还可以查询所有type 信息
show profile all for query 2;
下面说下几个重点的类型含义
type | 含义 |
---|---|
all | 显示所有的性能信息 |
block io | 显示IO的操作次数 |
context swiches | 显示上下文的切换次数 |
cpu | 显示用户的CP U时间、系统CPU时间 |
ipc | 显示发送和接受消息的数量 |
page faults | 显示页错误数量 |
source | 显示源码中的函数名称与位置 |
swaps | 显示swap的次数 |
show profile block io for query 2;
show profile context switches for query 2;
show profile cpu for query 2;
show profile ipc for query 2;
show profile page faults for query 2;
show profile source for query 2;
show profile swaps for query 2;
二、使用performance_schema
- MySQL 安装是自带的监控数据库,数据库包含87张表,用于监控MySQL Server 在一个较低级别的运行过程中的资源消耗、资源等待的情况,更加容易监控MySQL
1.开启和关闭
默认是开启的状态 可以在文件中修改 my.in
#默认开启
performance_schema = ON
2.设置配置
默认情况下会有一些配置事关闭状态,如下图:
打开等待事件的采集器配置项开关需要修改 setup_instruments配置表中对应采集器配置项
update setup_instruments set enabled ='YES' , timed ='YES';
3 查看当前Server 正在做什么
mysql> select * from events_waits_current\G;
字段 | 含义 |
---|---|
ID | 事件来自那个线程 |
event_name | 表示检测的具体内容 |
SOURCE | 表示这个检测代码在那个源文件以及行号 |
TIMER_START | 事件的开始时间 |
TIMER_END | 事件的结束时间 |
TIMER_WAIT | 事件的总花费时间 |
- events_waits_current每个线程只有一条记录
- events_waits_history 完成时间的信息,每个线程存10条记录,多个会覆盖
- events_waits_history_log 历史总记录 10000条
三、使用show processlist
查看链接的线程个数,来观察是否有大量的线程处于不正常的状态或其他不正常的特征
mysql>show processlist;