泊涯
作者泊涯·2018-12-18 16:26
系统测试工程师·高伟达公司

MYSQL诊断分析低效SQL方法

字数 933阅读 1833评论 0赞 2

性能诊断分析是一种利用工具手段,通过采用实际监测,而不是“自我臆测 ”来帮助项目组进行诊断。
可以通过以下方式定位执行效率较低的 SQL 语句:

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

    如果发现语法问题,例如全表扫描等可以通过建立索引等优化处理。
    一旦确定了性能瓶颈的根本原因,请采取适当的纠正措施,例如:
    1、调整服务器参数(缓存大小,内存等)。
    2、通过不同的方式调整查询
    3、调整数据库模式(表,索引等)。
    4、调整代码

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

2

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广