mysql性能剖析工具
程序员文章站
2022-04-29 21:50:30
...
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服务器的慢查询状态是否开启.执行如下命令:
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开发性能研究之批量插入数据的优化方法
-
《高性能MySQL》笔记——MySQL建表数据类型的选择
-
MYSQL性能优化的最佳20+条经验(转载)
-
利用Prometheus与Grafana对Mysql服务器的性能监控详解
-
python实现读取excel写入mysql的小工具详解
-
九大Java性能调试工具,必备至少一款
-
使用数据库客户端工具Oracle SQL Developer加载第三方驱动连接mysql的方法
-
MySQL中聚合函数count的使用和性能优化技巧
-
mysql 开发进阶篇系列 33 工具篇(mysqlbinlog日志管理工具)
-
mysql 开发进阶篇系列 34 工具篇 mysqlcheck(MyISAM表维护工具)