MySQL性能优化03:MySQL性能分析篇
2020-10-23 / Lampkins
MySQL性能分析之慢查询日志介绍和show profile介绍
¶ MySQL性能分析篇
¶ 性能分析的思路
- 首先需要使用【慢查询日志】功能,去获取所有查询时间比较长的SQL语句。上线前开,生产中一般不使用。
- 其次【查看执行计划】查看有问题的SQL的执行计划
- 最后可以使用【show profile[s]]】查看有问题的SQL 的性能使用情况
¶ 慢查询日志
数据库查询快慢是影响项目性能的一大因素,对于数据库,我们除了要优化SQL,更重要的是得先找到需要优化的SQL。 MySQL数据库有一个**“慢查询日志“**功能,用来记录查询时间超过某个设定值的SQL语句,这将极大程度帮助我们快速定位到症结所在,以便对症下药。
至于查询时间的多少才算慢,每个项目、业务都有不同的要求。
**作用:**记录在MySQL中响应时间超过阀值的语句,即运行时间超过long_query_time值的SQL,会被记录到慢查询日志中。
MySQL的慢查询日志功能默认是关闭的,需要手动开启。
¶ explain执行计划
EXPLAIN 命令是查看查询优化器如何决定执行查询的主要方法,使用EXPLAIN,只需要在查询中的SELECT关键字之前增加EXPLAIN这个词即可,MYSQL会在查询上设置一个标记,当执行查询时,这个标记会使其返回关于在执行计划中每一步的信息,它会返回一行或多行信息,显示出执行计划中的每一部分和执行的次序,从而可以从分析结果中找到查询语句或表结构的性能瓶颈。
EXPLAIN作用
- 分析出表的读取顺序
- 数据读取操作的操作类型
- 哪些索引可以使用
- 哪些索引被实际使用
- 表之间的引用
- 每张表有多少行被优化器查询
1 | -- 使用时在前面加上explain即可 |
¶ profile分析语句
Query Profiler是MySQL 自带的一种query诊断分析工具通过它可以分析出一 条SQL语句的硬件性能瓶颈在什么地方。
通常我们使用的explain,以及slow query log都无法做到精确分析,但是Query Profiler却可以定位出一条SQL语句执行的各种资源消耗情况,比如CPU/IO等,以及该SQL执行所耗费的时间等。不过该工具只有在MySQL5.0.37以及以上版本中才有实现。
MYSQL的该功能默认是关闭的,需要手动启动。
本文链接:
http://lampkins.gitee.io/2020/10/23/MySQL%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%9603/