码迷,mamicode.com
首页 > 数据库 > 详细

MYSQL诊断分析低效SQL方法

时间:2018-12-17 16:55:16      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:日志配置   com   delete   image   sha   数据库   实时   列表   锁表   

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方法

标签:日志配置   com   delete   image   sha   数据库   实时   列表   锁表   

原文地址:http://blog.51cto.com/372550/2331538

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!