mysql性能剖析工具

MYSQL慢查询配置
首先我们先查看MYSQL服务器的慢查询状态是否开启.执行如下命令:
show variables like '%quer%';
我们可以看到当前log_slow_queries状态为OFF, 说明当前并没有开启慢查询.
set global slow_query_log=1;
开启慢查询非常简单, 操作如下:
在[mysqld]中添加如下信息:
[mysqld]
log-slow-queries=/var/log/mysql-slow.log

long_query_time = 4

log-queries-not-using-indexes

long_query_time 说明查询时间超过几秒记录到日志。
log-queries-not-using-indexes 记录没有使用索引的查询记录到日志


show profiles;
mysql> show profiles;

Empty set (0.00 sec)

显示为空,说明profiles功能是关闭的。下面开启

mysql> set profiling=1;

Query OK, 0 rows affected (0.00 sec)


Show profiles;

mysql> show profiles;
+----------+------------+---------------------+
| Query_ID | Duration   | Query               |
+----------+------------+---------------------+
|        1 | 0.00015225 | SELECT DATABASE()   |
|        2 | 0.00045175 | show databases      |
|        3 | 0.00025575 | show tables         |
|        4 | 0.00029275 | select * from test1 |
+----------+------------+---------------------+
4 rows in set, 1 warning (0.00 sec)

mysql> show profile for query 4;
+----------------------+----------+
| Status               | Duration |
+----------------------+----------+
| starting             | 0.000057 |
| checking permissions | 0.000010 |
| Opening tables       | 0.000023 |
| init                 | 0.000023 |
| System lock          | 0.000015 |
| optimizing           | 0.000009 |
| statistics           | 0.000017 |
| preparing            | 0.000015 |
| executing            | 0.000006 |
| Sending data         | 0.000056 |
| end                  | 0.000008 |
| query end            | 0.000011 |
| closing tables       | 0.000013 |
| freeing items        | 0.000018 |
| cleaning up          | 0.000015 |
+----------------------+----------+
15 rows in set, 1 warning (0.00 sec)

查看占用cpu、 io等信息呢

mysql> show profile block io,cpu for query 2;

通过EXPLAIN查看查询的执行计划是通过估计得到的结果,通过计数器是实际的测量结果。EXPAIN无法知道临时表是否是磁盘表。



Show processlist;
这个方法通过不停捕获show processlist的输出,来观察是否有大量线程处于不正常状态或其他不正常的特征
Performace schema;
performance_schema提供以下功能:
1.提供进程等待的详细信息,包括锁、互斥变量、文件信息;
2.保存历史的事件汇总信息,为提供MySQL服务器性能做出详细的判断;
3.对于新增和删除监控事件点都非常容易,并可以随意改变mysql服务器的监控周期,例如(CYCLE、MICROSECOND)

首先show engines,确认performance shcema处于开启状态。

mysql> use performance_schema;
mysql> show tables;

show status 和 show global status
这两个指令可以查看MySQL服务器的状态信息
show status是当前会话的,退出就失效了。
show global status是全局的,重启数据库或者关闭数据库就失效了。

pt-query-digest
pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog
可以运行以下安装使用
wget percona.com/get/pt-query-digest
chmod u+x pt-query-digest


你可能感兴趣的:(mysql,performance)