MYSQL诊断分析低效SQL方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL诊断分析低效SQL方法相关的知识,希望对你有一定的参考价值。

mysql诊断分析低效SQL方法

 性能诊断分析是一种利用工具手段,通过采用实际监测,而不是“自我猜测 ”来帮助项目组进行诊断。

可以通过以下方式定位执行效率较低的 SQL 语句:

  1. MYSQL慢日志分析
    MYSQL可以通过慢查询日志定位那些执行效率较低的 sql 语句,用 --log-slow-queries[=file_name] 选项启动时, mysqld 写一个包含抓取所有执行时间超过long_query_time设定秒数的 SQL 语句的日志文件。
    慢日志配置,linux 一般在my.cnf,如果是wind服务一般在my.ini,
    技术分享图片
  2. 时时查看线程状态
    有时开启慢日志监控有时会影响MYSQL自身性能,可以 使用 show processlist查看当前MYSQL的线程, 因为命令慢查询日志在查询结束以后才纪录,所以在应用业务层上反映执行效率出现问题的时候,再查慢查询日志并不能精准的定位问题,可以使用 show processlist 命令查看当前 MySQL 在进行的线程,包括线程的状态,是否锁表等等,可以实时的查看 SQL 执行情况, 同时对一些锁表操作进行优化。
    技术分享图片
  3. EXPLAIN分析
    通过EXPLAIN 分析低效 SQL的执行计划:
    该EXPLAIN语句提供有关MySQL如何执行语句的信息。 EXPLAIN作用有 SELECT, DELETE, INSERT, REPLACE,和 UPDATE语句。EXPLAIN会返回SELECT语句中使用的每个表的行信息 。它按照MySQL在处理语句时读取它们的顺序列出输出中的表。如果MySQL使用嵌套循环连接方法解析所有连接。这意味着MySQL从第一个表中读取一行,然后在第二个表,第三个表中找到匹配的行,依此类推。处理完所有表后,MySQL会通过表列表输出所选列和回溯,直到找到有更多匹配行的表。从该表中读取下一行,并继续下一个表。
    EXPLAIN输出列如下:
    技术分享图片
    如果发现语法问题,例如全表扫描等可以通过建立索引等优化处理,例如http://blog.51cto.com/372550/2325251,索引优化 中介绍。

一旦确定了性能瓶颈的根本原因,请采取适当的纠正措施,例如:

1、调整服务器参数(缓存大小,内存等)。

2、通过不同的方式调整查询

3、调整数据库模式(表,索引等)。

4、调整代码

以上是关于MYSQL诊断分析低效SQL方法的主要内容,如果未能解决你的问题,请参考以下文章

mysql的sql语句的性能诊断分析

MySQL故障诊断常用方法手册(含脚本案例)

在实时生产服务器中诊断和分析 MySQL 的最佳方法是啥?

SQL Server / MySQL / Access - 以低效的方式加速插入许多行

MySQL SQL优化

MySQL索引及查询优化总结